Последние Файлы 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.