 |
|
 |
|
|
|
Последние Файлы GTA 4 |
Последние Файлы GTA-MP |
Реклама |
|
|
|
|
|
Функции,макросы,массивы
| |
| Fus1 | Дата: Пятница, 23.09.2011, 01:11 | Сообщение # 1 |
|
Группа:
Продвинутые
Сообщений: 2704
Награды: 121
Город: Melbourne Australia
Репутация: 3103
Замечания: 0%
Статус: 
| Прошу поднять и закрепить тему.
Многие ищут всякие функции для создания сервера и т.д, давайте без оффтопа и флуда, просто выклыдываем свои функции,макросы,массивы или из интернета и пишим для чего они предназначены, это намного облегчит поиск. Так-же в этой теме предлогаю чтобы любой мог написать функции которая ему нужна (если ещё её не выкладывали) это также позволит пополнять список функций.
Извлекаем левую часть строки в leftside Code stock bool: GetLeftString(const string[],const center[],leftside[],sizeof_leftside) { strmid(leftside,string,0,strfind(string,center,true),sizeof_leftside); return true; }
Извлекаем правую часть строки в rightside Code stock bool: GetRightString(const string[],const center[],rightside[],sizeof_rightside) { strmid(rightside,string,strfind(string,center,true)+1,strlen(string),sizeof_rightside); return true; }
Записывает в лог русскими буквами (кириллица) Code stock fwriteRUS(File:file,string[]) { for(new i ; i < strlen(string); i++) fputchar(file,string[i],false); return 1; }
Функция дописывает строку string в файл filename Code stock WriteLog(string[],filename[]) { new File:hFile; hFile = fopen(filename, io_append); fwriteRUS(hFile, string); fclose(hFile); return 1; } Quote Например: WriteLog("Тестируем лог\n","test.log"); В файл с именем "test.log" в скриптфайлах, допишется строка "Тестируем лог" Если этого файла нет - он автоматически будет создан
Действие '/me' Code stock MeAction(playerid,string[],Float:radius) { new p = GetMaxPlayers(); for(new i; i < p; i++) { if(IsPlayerNearPlayer(playerid,i,radius)) SendClientMessage(i,0xC2A2DAAA,string); } return 1; }
Возвращает имя игрока Code stock FirstName(string[]) { new end = strfind(string,"_",true), result[MAX_PLAYER_NAME]; strmid(result,string,0,end,MAX_PLAYER_NAME); return result; }
Возвращает фамилию игрока Code stock LastName(string[]) { new start = strfind(string,"_",true), result[MAX_PLAYER_NAME]; strmid(result,string,start+1,strlen(string),MAX_PLAYER_NAME); return result; }
Возвращает скорость транспортного средства Code stock GetVehicleSpeed(carid) { new Float:Vx,Float:Vy,Float:Vz,Float:rtn; GetVehicleVelocity(carid,Vx,Vy,Vz); rtn = floatsqroot(Vx*Vx+Vy*Vy+Vz*Vz); return floatround(rtn * 100); }
Узнать наибольшее ИД автомобиля Code stock GetMaxVehicleID() { for(new i = 1; i < MAX_VEHICLES; i ++) { if(GetVehicleModel(i) < 400 || GetVehicleModel(i) > 611) return i-1; } return MAX_VEHICLES; }
Сообщение отредактировал Fus1 - Пятница, 23.09.2011, 01:11 |
| |
|
|
| Vagrant | Дата: Пятница, 23.09.2011, 13:29 | Сообщение # 2 |
|
Уважаемый человек
Группа:
I'm V.I.P.
Сообщений: 904
Награды: 21
Город: Находка
Репутация: 489
Замечания: 0%
Статус: 
| SendFormatMessage(playerid,color,const format[],{Float,_}:...); - Отправляет сообщение с выводом значений переменных игроку. Code #if !defined SendFormatMessage new FALSE = false; #pragma unused FALSE #define SendFormatMessage(%0,%1,%2,%3) do{ new str[128]; format(str, 128, %2, %3); SendClientMessage(%0, %1, str); } while(FALSE) #endif Пример: Quote new Float:pHealth; GetPlayerHealth(playerid,pHealth); SendFormatMessage(playerid,0xFFFFFFAA,"Здоровье: %.0f",pHealth); Выведет в чат: Здоровье: 100
SendFormatMessageToAll(color,const format[],{Float,_}:...); - Отправляет сообщение с выводом значений переменных всем. Code #if !defined SendFormatMessageToAll new FALSE = false; #pragma unused FALSE #define SendFormatMessageToAll(%0,%1,%2,%3) do{ new str[128]; format(str, 128, %2, %3); SendClientMessageToAll(%0, %1, str); } while(FALSE) #endif
Узнать и вернуть ник игрока. Code stock GetName(playerid) { new PlayerName[MAX_PLAYER_NAME]; GetPlayerName(playerid,PlayerName,sizeof(PlayerName)); return PlayerName; }
Человек учась ходить падает, и только падая, он учится ходить! Мои работы: [GM] W.F.S.A. V. 1.0 - 100% [GM] San Fierro Enigmatic (TDM) V. 1.0 - 100% [FS] Clan House V. 1.0 - 100% [FS] Save Car Tun System V. 1.0 - 100% [FS] Vagrant Anti-CapsLock V. 2.1 - 100% [FS] Vagrant Anti-Advertise V. 1.1, V. 2.0 - 100% [APP] SA-MP Interior Viewer V. 1.0 - 100%
Принимаю заказы на помощь в скриптинге!
Сообщение отредактировал Vagrant - Пятница, 23.09.2011, 17:13 |
| |
|
|
| stepmex | Дата: Пятница, 23.09.2011, 16:34 | Сообщение # 3 |
|
Мастер джэдай
Группа:
Продвинутые
Сообщений: 2914
Награды: 35
Город: Е-бург
Репутация: 1032
Замечания: 0%
Статус: 
| Quote (Vagrant) #define SendFormatMessage(%0,%1,%2,%3) do{new str[128];format(_str,128,%2,%3);SendClientMessage(%0,%1,_str);}while(FALSE)
И создал Бог женщину!.. Существо получилось злобное, но симпатичное...
Сообщение отредактировал stepmex - Пятница, 23.09.2011, 16:34 |
| |
|
|
| Vagrant | Дата: Пятница, 23.09.2011, 17:05 | Сообщение # 4 |
|
Уважаемый человек
Группа:
I'm V.I.P.
Сообщений: 904
Награды: 21
Город: Находка
Репутация: 489
Замечания: 0%
Статус: 
| Кароче SendFormatMessage в другом исполнении немного. stepmex, там и FALSE не определён.
Человек учась ходить падает, и только падая, он учится ходить! Мои работы: [GM] W.F.S.A. V. 1.0 - 100% [GM] San Fierro Enigmatic (TDM) V. 1.0 - 100% [FS] Clan House V. 1.0 - 100% [FS] Save Car Tun System V. 1.0 - 100% [FS] Vagrant Anti-CapsLock V. 2.1 - 100% [FS] Vagrant Anti-Advertise V. 1.1, V. 2.0 - 100% [APP] SA-MP Interior Viewer V. 1.0 - 100%
Принимаю заказы на помощь в скриптинге!
|
| |
|
|
| Impereal | Дата: Пятница, 23.09.2011, 17:30 | Сообщение # 5 |
|
Мастер джэдай
Группа:
I'm V.I.P.
Сообщений: 2677
Награды: 51
Город: Санкт-Петербург
| Quote (Vagrant) stepmex, там и FALSE не определён. ставь 0, варнинг будет, но работает корректно.
Прощай самп-рус =Р
|
| |
|
|
| Vagrant | Дата: Суббота, 24.09.2011, 07:26 | Сообщение # 6 |
|
Уважаемый человек
Группа:
I'm V.I.P.
Сообщений: 904
Награды: 21
Город: Находка
Репутация: 489
Замечания: 0%
Статус: 
| Impereal, Я код заменил, уже всё работает правильно. Был ещё другой вариант этой функции (нашёл на sa-mp.com) но там он выводит неверную информацию.
Человек учась ходить падает, и только падая, он учится ходить! Мои работы: [GM] W.F.S.A. V. 1.0 - 100% [GM] San Fierro Enigmatic (TDM) V. 1.0 - 100% [FS] Clan House V. 1.0 - 100% [FS] Save Car Tun System V. 1.0 - 100% [FS] Vagrant Anti-CapsLock V. 2.1 - 100% [FS] Vagrant Anti-Advertise V. 1.1, V. 2.0 - 100% [APP] SA-MP Interior Viewer V. 1.0 - 100%
Принимаю заказы на помощь в скриптинге!
|
| |
|
|
| ZiGGi | Дата: Суббота, 24.09.2011, 10:41 | Сообщение # 7 |
|
Мастер джэдай
Группа:
Продвинутые
Сообщений: 2652
Награды: 34
Город: St. Petersburg
Репутация: 2102
Замечания: 20%
Статус: 
| Quote (Fus1) stock fwriteRUS(File:file,string[]) { for(new i ; i < strlen(string); i++) fputchar(file,string[i],false); return 1; } Где оптимизация? Надо так Code stock fwriteRUS(File:file,string[]) { for(new i,len=strlen(string) ; i < len; i++) fputchar(file,string[i],false); return 1; } Quote (Fus1) stock bool: GetLeftString(const string[],const center[],leftside[],sizeof_leftside) { strmid(leftside,string,0,strfind(string,center,true),sizeof_leftside); return true; } Зачем здесь вообще bool???
Бложе [indent]Мой блог Уроки по Pawn[/indent]
Open-GTO [indent]Блог разработчиков GitHub: https://github.com/Open-GTO/Open-GTO Сборки мода с сервером тут[/indent]
|
| |
|
|
| Alcoholik | Дата: Суббота, 24.09.2011, 11:02 | Сообщение # 8 |
|
Мастер джэдай
Группа:
Администратор
Сообщений: 8299
Награды: 111
Город: Санкт-Петербург
Репутация: 6085
Статус: 
| Quote (ZiGGi) stock fwriteRUS(File:file,string[]) { for(new i,len=strlen(string) ; i < len; i++) fputchar(file,string[i],false); return 1; } Что это за оптимизация?
if(isset($beer)&&isset($girl)) { drink($beer);fuck($girl); }else die(); Мониторинг sa:mp серверов Приватно никого не консультирую, моды также не пишу, ни так, ни за деньги. Моя ICQ 675715, пишу только с неё. Все остальные Роачи фейки, ничего я не продаю и продавать не буду, вас разводят.
|
| |
|
|
| ZiGGi | Дата: Суббота, 24.09.2011, 11:12 | Сообщение # 9 |
|
Мастер джэдай
Группа:
Продвинутые
Сообщений: 2652
Награды: 34
Город: St. Petersburg
Репутация: 2102
Замечания: 20%
Статус: 
| Quote (KroN) Что это за оптимизация? Ну в первом случае команда strlen(string) выполнялась strlen(string) раз, поэтому я вынес её из условия и она теперь выполняется 1 раз
Бложе [indent]Мой блог Уроки по Pawn[/indent]
Open-GTO [indent]Блог разработчиков GitHub: https://github.com/Open-GTO/Open-GTO Сборки мода с сервером тут[/indent]
|
| |
|
|
| Fus1 | Дата: Суббота, 24.09.2011, 13:22 | Сообщение # 10 |
|
Группа:
Продвинутые
Сообщений: 2704
Награды: 121
Город: Melbourne Australia
Репутация: 3103
Замечания: 0%
Статус: 
| ZiGGi, хватит умничать ? Можно и так, есть и другие варианты.
Code stock GetLeftString(string[],center[]) { new leftside[64]; new poss = strfind(string,center,true); strmid(leftside,string,0,poss,sizeof(leftside)); return leftside; }
|
| |
|
|
| ZiGGi | Дата: Суббота, 24.09.2011, 19:31 | Сообщение # 11 |
|
Мастер джэдай
Группа:
Продвинутые
Сообщений: 2652
Награды: 34
Город: St. Petersburg
Репутация: 2102
Замечания: 20%
Статус: 
| Quote (Fus1) ZiGGi, хватит умничать ? Способ, который указал ты, очень хреновый и использование его, даже в средних количествах, может навредить серверу.
Бложе [indent]Мой блог Уроки по Pawn[/indent]
Open-GTO [indent]Блог разработчиков GitHub: https://github.com/Open-GTO/Open-GTO Сборки мода с сервером тут[/indent]
|
| |
|
|
| DiSE | Дата: Суббота, 19.11.2011, 12:17 | Сообщение # 12 |
|
Группа:
I'm V.I.P.
Сообщений: 1759
Награды: 23
Город: Уфа
Репутация: 337
Замечания: 80%
Статус: 
| Author: Daniel Rubin(Darnell / Spenzo )
http://pastebin.com/Q6x6XBQn
Создаёт счётчик Пример
Code dcmd_count(playerid,params[]) { new time,soundid if(sscanf(params,"dd",time,soundid)) return SendClientMessage(playerid,COLOR_GREY,"/count [Time][soundID]") if(time < 0) CreateCountdown(time,soundid) else StopCountdown() return 1 }
|
| |
|
|
| -Mike_S- | Дата: Воскресенье, 20.11.2011, 00:25 | Сообщение # 13 |
|
Новенький
Группа:
Пользователи
Сообщений: 27
Награды: 1
Город: Москва
Репутация: -35
Замечания: 0%
Статус: 
| Возвращает кол-во строк из таблицы (очень удобно для sizeinfo(), можно сделать динамическую систему домов, машин и пр. которые будут хранится в MySQL) Code forward GetMysqlNumRows(table[]); public GetMysqlNumRows(table[]) { new query[64]; format(query,sizeof(query),"SELECT * FROM %s",table); samp_mysql_query(query); samp_mysql_store_result(); if (samp_mysql_num_rows()==0) { return 0; } else { return samp_mysql_num_rows(); } }
[B]Контакте - http://vkontakte.ru/id125129202 Виски по оптовым ценам [Москва] - http://vkontakte.ru/whiskey_seales В разработке - www.LA-RP.ru "Репутация была изменена [-]" - Да мне пох*й (trollface).
|
| |
|
|
| Pra | Дата: Воскресенье, 20.11.2011, 10:05 | Сообщение # 14 |
|
Уверенный в себе
Группа:
Продвинутые
Сообщений: 216
Награды: 9
Город: Северная Столица
Репутация: 211
Замечания: 100%
Статус: 
| -Mike_S-, ужасно, для чего получать все данные таблицы, если нужно только кол-во? Code stock GetMysqlNumRows(table[]) { new query[32], result[32]; format(query,sizeof(query),"SELECT COUNT(*) AS count FROM %s",table); mysql_query(query); mysql_store_result(); mysql_fetch_row(result); mysql_free_result(); return strval(result); }
|
| |
|
|
| DiSE | Дата: Воскресенье, 20.11.2011, 11:38 | Сообщение # 15 |
|
Группа:
I'm V.I.P.
Сообщений: 1759
Награды: 23
Город: Уфа
Репутация: 337
Замечания: 80%
Статус: 
| Code stock GW(weaponid) { new gunname[32] GetWeaponName(weaponid,gunname,sizeof(gunname)) return gunname }
Узнаёт имя оружия по его ID.
|
| |
|
|
|
 |
|
 | |
| |
|