Вопросы по PAWN скриптингу

Ну погоди!

Участник
94
32
Возможно ли как то добавить этот обьект на свой сервер ? (https://www.gtainside.com/en/sanandreas/maps/190406-honeycome-lobby/)
для всех игроков, или это только если будет лаунчер который скачает сборку ?

так как он скачивается ввиде
fastman + функция, которая не хукает валидный ли ID объекта
 

Farany1

Новичок
11
2
D:\загрузки\black rp\register\pawno\server.pwn(139) : error 017: undefined symbol "Account"
D:\загрузки\black rp\register\pawno\server.pwn(313) : error 017: undefined symbol "Account"
D:\загрузки\black rp\register\pawno\server.pwn(321) : error 017: undefined symbol "Account"
Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase


3 Errors.

// This is a comment
// uncomment the line below if you want to write a filterscript
//#define FILTERSCRIPT

#include <a_samp>
#include <mxINI>

#if defined FILTERSCRIPT

forward Account(playerid, mode, pass[24])

enum e_pinfo {
Pass[24],
Money
}

new pINfo[MAX_PLAYERS][e_pinfo];
main()
{
print ("Filin Rp");
}

new Account

public Account(playerid, mode, pass[24])
{
new FileName[MAX_PLAYER_NAME+5];
GetPlayerName(playerid,FileName,sizeof(FileName));
format(FileName,sizeof(FileName),"%s.ini",FileName);
new INI = ini_openFile(Filename);
if(INI == INI_OK)
{
switch(mode)
{
case 1:
{
ini_setString(INI, "Password", pass);
ini_closeFile(INI);
return ShowPlayerDialog(playerid, 1, 3, "Авторизация", "Введите пароль", "Авторизация", "Отмена");
}
case 2:
{
new tmp[24];
ini_getString(INI, "Password", tmp);
if(strcmp(tmp,pass,false,24) == 0);
{
pInfo[playerid][Pass] = tmp;
ini_getInteger(INI, "Money", pInfo[playerid][Money]);
ini_closeFile(INI);
return
}
else
{
return ShowPlayerDialog(playerid, 1, 3, "Авторизация", "Введите пароль", "Авторизация", "Отмена");
}
}
case 0:
{
ini_closeFile(INI);
return ShowPlayerDialog(playerid, 1, 3, "Авторизация", "Введите пароль", "Авторизация", "Отмена");
}
case 3:
{
ini_setString(INI, "Password", pInfo[playerid][Pass]);
ini_closeFile(INI);
return
}
}
}
else
{
INI = ini_createFile(FileName);
if(INI == INI_OK)// ok
{
ini_setString(INI, "Password", "");
ini_closeFile(INI);
ShowPlayerDialog(playerid, 0, 3, "Регистрация", "Введите ваш пароль", "Регистрация", "Отмена");
}
else return Account(playerid, 0,"");
}
return 1;
}

public OnPlayerConnect(playerid)
{
Account(playerid, 0, "");
format(string,sizeof string,"%s Зашел!",pName);
SendClientMessageToAll(0xFFFFFFAA,string);
return 1;
}

public OnFilterScriptInit()
{
print("\n--------------------------------------");
print(" Blank Filterscript by your name here");
print("--------------------------------------\n");
return 1;
}

public OnFilterScriptExit()
{
return 1;
}

#else

main()
{
print("\n----------------------------------");
print(" Blank Gamemode by your name here");
print("----------------------------------\n");
}

#endif

public OnGameModeInit()
{
// Don't use these lines if it's a filterscript
SetGameModeText("Blank Script");
AddPlayerClass(0, 1958.3783, 1343.1572, 15.3746, 269.1425, 0, 0, 0, 0, 0, 0);
return 1;
}

public OnGameModeExit()
{
return 1;
}

public OnPlayerRequestClass(playerid, classid)
{
SetPlayerPos(playerid, 1958.3783, 1343.1572, 15.3746);
SetPlayerCameraPos(playerid, 1958.3783, 1343.1572, 15.3746);
SetPlayerCameraLookAt(playerid, 1958.3783, 1343.1572, 15.3746);
return 1;
}

public OnPlayerDisconnect(playerid, reason)
{
Account(playerid, 3, "");
return 1;
}

public OnPlayerSpawn(playerid)
{
return 1;
}

public OnPlayerDeath(playerid, killerid, reason)
{
return 1;
}

public OnVehicleSpawn(vehicleid)
{
return 1;
}

public OnVehicleDeath(vehicleid, killerid)
{
return 1;
}

public OnPlayerText(playerid, text[])
{
return 1;
}

public OnPlayerCommandText(playerid, cmdtext[])
{
if (strcmp("/mycommand", cmdtext, true, 10) == 0)
{
// Do something here
return 1;
}
return 0;
}

public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger)
{
return 1;
}

public OnPlayerExitVehicle(playerid, vehicleid)
{
return 1;
}

public OnPlayerStateChange(playerid, newstate, oldstate)
{
return 1;
}

public OnPlayerEnterCheckpoint(playerid)
{
return 1;
}

public OnPlayerLeaveCheckpoint(playerid)
{
return 1;
}

public OnPlayerEnterRaceCheckpoint(playerid)
{
return 1;
}

public OnPlayerLeaveRaceCheckpoint(playerid)
{
return 1;
}

public OnRconCommand(cmd[])
{
return 1;
}

public OnPlayerRequestSpawn(playerid)
{
return 1;
}

public OnObjectMoved(objectid)
{
return 1;
}

public OnPlayerObjectMoved(playerid, objectid)
{
return 1;
}

public OnPlayerPickUpPickup(playerid, pickupid)
{
return 1;
}

public OnVehicleMod(playerid, vehicleid, componentid)
{
return 1;
}

public OnVehiclePaintjob(playerid, vehicleid, paintjobid)
{
return 1;
}

public OnVehicleRespray(playerid, vehicleid, color1, color2)
{
return 1;
}

public OnPlayerSelectedMenuRow(playerid, row)
{
return 1;
}

public OnPlayerExitedMenu(playerid)
{
return 1;
}

public OnPlayerInteriorChange(playerid, newinteriorid, oldinteriorid)
{
return 1;
}

public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
{
return 1;
}

public OnRconLoginAttempt(ip[], password[], success)
{
return 1;
}

public OnPlayerUpdate(playerid)
{
return 1;
}

public OnPlayerStreamIn(playerid, forplayerid)
{
return 1;
}

public OnPlayerStreamOut(playerid, forplayerid)
{
return 1;
}

public OnVehicleStreamIn(vehicleid, forplayerid)
{
return 1;
}

public OnVehicleStreamOut(vehicleid, forplayerid)
{
return 1;
}

public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
switch(dialogid)
{
case 0:
{
if(!response) return Kick(playerid);
if(strlen(inputtext) <=5 || strlen(inputtext) > 24) return ShowPlayerDialog(playerid, 0, 3, "Регистрация", "Вы ввели слишком длинный или короткий пароль", "Регистрация", "Отмена");
new tmp[24];
format(tmp, sizeof(tmp), "%s",inputtext);
return Account(playerid, 1, tmp);
}
case 1:
{
if(!response) return Kick(playerid);
if(strlen(inputtext) <=5 || strlen(inputtext) > 24) return ShowPlayerDialog(playerid, 0, 3, "Авторизация", "Вы ввели слишком длинный или короткий пароль", "Авторизация", "Отмена");
new tmp[24];
format(tmp, sizeof(tmp), "%s",inputtext);
return Account(playerid, 2, tmp);
}
}
return 1;
}

public OnPlayerClickPlayer(playerid, clickedplayerid, source)
{
return 1;
}
 

Лимур

Новичок
7
2
Смотрите, хочу сделать скрипт ,проверяющий есть ли заместители в оргу или нет и потом ,в скрипте вписывать возможные значения ид замов/лидеров
 

Farany1

Новичок
11
2
Код:
public OnPlayerCommandText(playerid, cmdtext[])
{
    if(!strcmp(cmdtext, "/veh", true))
    {
        new idcar;
        if(sscanf(cmdtext, "i", idcar))
        {
            new Float:playerX, Float:playerY, Float:playerZ;
            new Float:newPlayerX, Float:newPlayerY, Float:newPlayerZ;

            GetPlayerPos(playerid, playerX, playerY, playerZ);

            newPlayerX = playerX + 2.0;
            newPlayerY = playerY + 2.0;
            newPlayerZ = playerZ;
            
            CreateVehicle(idcar, newPlayerX, newPlayerY, newPlayerZ, 64.1, -1, -1);
            SendClientMessage(playerid, 0xBEBEBEFF, !"Ñïàâíèì òà÷êó");
        }
        else
        {
            SendClientMessage(playerid, 0xBEBEBEFF, !"×òî-òî íå òàê");
        }
    }
    return 1;
}

Ошибка:
D:\Games\serv\pawno\Untitled.pwn(234) : warning 202: number of arguments does not match definition
Pawn compiler 3.2.3664              Copyright (c) 1997-2006, ITB CompuPhase


1 Warning.
 

Митя Евгеньевич

Известный
254
101
Код:
public OnPlayerCommandText(playerid, cmdtext[])
{
    if(!strcmp(cmdtext, "/veh", true))
    {
        new idcar;
        if(sscanf(cmdtext, "i", idcar))
        {
            new Float:playerX, Float:playerY, Float:playerZ;
            new Float:newPlayerX, Float:newPlayerY, Float:newPlayerZ;

            GetPlayerPos(playerid, playerX, playerY, playerZ);

            newPlayerX = playerX + 2.0;
            newPlayerY = playerY + 2.0;
            newPlayerZ = playerZ;
           
            CreateVehicle(idcar, newPlayerX, newPlayerY, newPlayerZ, 64.1, -1, -1);
            SendClientMessage(playerid, 0xBEBEBEFF, !"Ñïàâíèì òà÷êó");
        }
        else
        {
            SendClientMessage(playerid, 0xBEBEBEFF, !"×òî-òî íå òàê");
        }
    }
    return 1;
}

Ошибка:
D:\Games\serv\pawno\Untitled.pwn(234) : warning 202: number of arguments does not match definition
Pawn compiler 3.2.3664              Copyright (c) 1997-2006, ITB CompuPhase


1 Warning.
В функции
C++:
CreateVehicle(idcar, newPlayerX, newPlayerY, newPlayerZ, 64.1, -1, -1);
пропущен аргумент respawn_delay
структура функции CreateVehicle:
(vehicletype, Float:x, Float:y, Float:z, Float:rotation, color1, color2, respawn_delay)
 

#SameLine

Активный
383
27
как сохранить переменную для сервера? Переменную для игрока можно присвоить ему же, а допустим у меня есть система смены админ-зоны, чтобы переменная сохраняла локацию (7: к примеру) ее нужно сохранить в базе, иначе локация будет возвращаться вечно дефолтной после перезагрузки сервера. Так вот у меня вопрос, как сохранить переменную для сервера, пробовал что-то делать, а не тупо обратиться за чей-то помощью, ушло 4 дня с учетом что я забивал на это потом снова возвращался к решению данной проблемы, пробовал множество систем, но в какой-то момент мне мозг выдал ошибку "not enough IQ"
 

Shepard

Активный
459
88
как сохранить переменную для сервера? Переменную для игрока можно присвоить ему же, а допустим у меня есть система смены админ-зоны, чтобы переменная сохраняла локацию (7: к примеру) ее нужно сохранить в базе, иначе локация будет возвращаться вечно дефолтной после перезагрузки сервера. Так вот у меня вопрос, как сохранить переменную для сервера, пробовал что-то делать, а не тупо обратиться за чей-то помощью, ушло 4 дня с учетом что я забивал на это потом снова возвращался к решению данной проблемы, пробовал множество систем, но в какой-то момент мне мозг выдал ошибку "not enough IQ"
Создаешь в базе отдельную таблицу с настройками сервера, например. В неё добавляешь admin_int = 1(defolt), далее при загрузке мода, из бд берёшь число и присваиваешь переменной. При смене админ инты через команду - в бд сохраняешь новое число и меняешь значение переменной. Если ты не знаешь, как работать с бд - смотри мануалы
 
  • Нравится
Реакции: #SameLine