Как переконвектировать pwn скрипты из 0.1b в 0.2
У многих могут возникнуть проблемы по поводу перевода скриптов из 0.1 в 0.2. Причина в том, что в 0.2 версии сервера появился новый компилятор, который оказался очень требовательным. Поэтому в скрипт придется внести ряд небольших изменений.

Пример:

Неправильный вариант:

Код:
public PlayerName(playerid) { // в этой строчке неправильное слово - public, потому что функция (public) не могут теперь возвращать строки или массивы. Также эта функция не повешена на таймер, поэтому используйте stock вместо public
new name[255]; // в этой строчке пропущены пробелы. Поставьте 4 пробела или один TAB.
if (IsPlayerConnected(playerid)) { // в этой строчке пропущены пробелы. Поставьте 4 пробела или один TAB.
GetPlayerName(playerid, name, MAX_STRING); // в этой строчке пропущены пробелы. Поставьте 8 пробелов или два TAB.
} // в этой строчке пропущены пробелы. Поставьте 4 пробела или один TAB.
else name[0]=0; // пропущены пробелы или строка должна быть перемещена на предыдущую строчку.
return name; // в этой строчке пропущены пробелы. Поставьте 4 пробела или один TAB.
}

Правильный вариант:

Код:
stock PlayerName(playerid) {
	new name[255];
	if (IsPlayerConnected(playerid)) {
                GetPlayerName(playerid, name, MAX_STRING);
	} else name[0]=0;
	return name;
}

Детали:

Ошибка 217: loose indentation
Это как раз та ошибка в тех строчках где не хватает пробелов или TAB

Ошибка 235: public function lacks forward declaration
Это так ошибка, когда не хватает forward.
Для функций,повешенных на таймер в начале скрипта пишется:

Код:
forward NameFunction(params);

для остальных, кроме (они уже отфорвадены в a_samp.inc)

OnGameModeInit();
OnGameModeExit();
OnFilterScriptInit();
OnFilterScriptExit();
OnPlayerConnect(playerid);
OnPlayerDisconnect(playerid, reason);
OnPlayerSpawn(playerid);
OnPlayerDeath(playerid, killerid, reason);
OnVehicleSpawn(vehicleid);
OnVehicleDeath(vehicleid, killerid);
OnPlayerText(playerid, text[]);
OnPlayerCommandText(playerid, cmdtext[]);
OnPlayerInfoChange(playerid);
OnPlayerRequestClass(playerid, classid);
OnPlayerEnterVehicle(playerid, vehicleid, ispassenger);
OnPlayerExitVehicle(playerid, vehicleid);
OnPlayerStateChange(playerid, newstate, oldstate);
OnPlayerEnterCheckpoint(playerid);
OnPlayerLeaveCheckpoint(playerid);
OnPlayerEnterRaceCheckpoint(playerid);
OnPlayerLeaveRaceCheckpoint(playerid);
OnRconCommand(cmd[]);
OnPlayerPrivmsg(playerid, recieverid, text[]);
OnPlayerRequestSpawn(playerid);
OnObjectMoved(objectid);
OnPlayerObjectMoved(playerid, objectid);
OnPlayerPickUpPickup(playerid, pickupid);
OnVehicleMod(vehicleid, componentid);
OnVehiclePaintjob(vehicleid, paintjobid);
OnVehicleRespray(vehicleid, color1, color2);
OnPlayerSelectedMenuRow(playerid, row);
OnPlayerExitedMenu(playerid);
OnPlayerInteriorChange(playerid, newinteriorid, oldinteriorid);
OnPlayerKeyStateChange(playerid, newkeys, oldkeys);

public заменяется на stock

также чтобы не мучаться с ошибками loose indentation достаточно в начале скрипта написать строчку:

Код:
#pragma tabsize 0

P.S. в a_samp.inc прописано (#pragma tabsize 4)

также рublic функции теперь не могут возвращать строки или массивы a, все остальные значения - спокойно.
Форвардить нужно все свои public-функции, а не только те, что поставлены на таймер.
ну вроде все.

Удачи,
    LuxurY :)