SA-MP Forums Archive
Проблема с ДМ ареной - Printable Version

+- SA-MP Forums Archive (https://sampforum.blast.hk)
+-- Forum: Non-English (https://sampforum.blast.hk/forumdisplay.php?fid=9)
+--- Forum: Languages (https://sampforum.blast.hk/forumdisplay.php?fid=33)
+---- Forum: Русский/Russian (https://sampforum.blast.hk/forumdisplay.php?fid=32)
+---- Thread: Проблема с ДМ ареной (/showthread.php?tid=306168)

Pages: 1 2


Помогите исправить ошибки - [HHT]DRON - 23.12.2011

При создании DM-арены появляются ошибки,помогите пожалуйста исправить
Code:
D:\Games\server\server\gamemodes\SFTDM.pwn(1259) : warning 219: local variable "DM" shadows a variable at a preceding level
D:\Games\server\server\gamemodes\SFTDM.pwn(1276) : error 028: invalid subscript (not an array or too many subscripts): "DM"
D:\Games\server\server\gamemodes\SFTDM.pwn(1276) : warning 215: expression has no effect
D:\Games\server\server\gamemodes\SFTDM.pwn(1276) : error 001: expected token: ";", but found "]"
D:\Games\server\server\gamemodes\SFTDM.pwn(1276) : error 029: invalid expression, assumed zero
D:\Games\server\server\gamemodes\SFTDM.pwn(1276) : fatal error 107: too many error messages on one line

Compilation aborted.Pawn compiler 3.2.3664	 	 	Copyright © 1997-2006, ITB CompuPhase


4 Errors.



Re: Помогите исправить ошибки - eakwarp - 23.12.2011

Код в студию, экстрасенсов нет.


Re: Помогите исправить ошибки - OKStyle - 24.12.2011

Тут и без кода монятно, что переменную DM, которую ты вводишь, надо назвать по-другому.


Re: Помогите исправить ошибки - [HHT]DRON - 24.12.2011

Вот код
Code:
if (strcmp(cmdtext, "/дм", true)==0 || strcmp(cmd, "/dm", true) == 0)
{
DM[playerid] = 1;//установим игроку, что он на ДМ
SetPlayerVirtualWorld(playerid,1);//установим вирт. мир
SetPlayerInterior(playerid,0);//установим 0 инт. (улица)
ResetPlayerWeapons(playerid);//отними все оружие
GivePlayerWeapon(playerid, 24, 100);//дадим дигл
SetPlayerHealth(playerid,100);//установим 100 хп
SendClientMessage(playerid, -1, "Чтобы выйти из ДМ пропишите: /выход.");//выдадим сообщение
switch(random(2))//2 рандомных телепорта на ДМ.
{
case 0: SetPlayerPos(playerid,2571.4932,2824.8291,10.8203);//1 позиция
case 1: SetPlayerPos(playerid,2604.3994,2828.9465,10.8203);//2 позиция
}
return 1;
}
if (strcmp(cmdtext, "/выход", true)==0 || strcmp(cmd, "/exit", true) == 0)
{
if (DM == 1)//если переменная ДМ = вирт. миру игрока то:
{
DM = GetPlayerVirtualWorld(playerid);//приравняем переменную DM к вирт. миру игрока (его мы установили при тп. на ДМ)
DM[playerid] = 0;//сними условие нахождения игрока на ДМ
SpawnPlayer(playerid);//заспавним игрока
SetPlayerVirtualWorld(playerid,0);//установим 0 вирт. мир [!] обязательно!
GivePlayerWeapon(playerid, 1, 10);//
GivePlayerWeapon(playerid, 2, 20);//Дадим игроку пушки
GivePlayerWeapon(playerid, 3, 30);//
SetPlayerHealth(playerid,100);//Дадим хп.
}
if (DM == 0)return SendClientMessage(playerid,-1,"Вы не на ДМ.");//но если переменная DM не равна виртуальному миру игрок, то выдадим сообщение.
return 1;
}



Re: Помогите исправить ошибки - White_116 - 24.12.2011

PHP Code:
DM[playerid] = 1;//установим игроку, что он на ДМ 
if (DM == 1)//если переменная ДМ = вирт. миру игрока то: 
косяк


Re: Помогите исправить ошибки - [HHT]DRON - 24.12.2011

когда удаляю получается "Unknown"


Re: Помогите исправить ошибки - OKStyle - 24.12.2011

new DM[MAX_PLAYERS]; замени на:
pawn Code:
new DM1[MAX_PLAYERS];
и используй DM1[playerid] вместо DM[playerid].


Re: Помогите исправить ошибки - [HHT]DRON - 24.12.2011

Code:
D:\Games\server\server\gamemodes\SFTDM.pwn(1477) : warning 209: function "OnPlayerSpawn" should return a value
D:\Games\server\server\gamemodes\SFTDM.pwn(1478) : error 010: invalid function or declaration
Pawn compiler 3.2.3664	 	 	Copyright © 1997-2006, ITB CompuPhase


1 Error.
Ошибки тут:
Code:
if(DM1[playerid] == 1) return OnPlayerCommandText(playerid,"/дм");//если переменная DM=1 то вернем игрока на дм зону.
}
return 1;
}



Re: Помогите исправить ошибки - lost13 - 25.12.2011

кинь код, покажи строки 1477 и 1478. в OnPlayerSpawn return походу не правильно поставлен.


Re: Помогите исправить ошибки - [HHT]DRON - 25.12.2011

все у меня получилось исправить ошибку,всем спасибо.


Проблема с ДМ ареной - [HHT]DRON - 25.12.2011

Помогите мне с Дм ареной =)
Дело вот в чем,когда игрок телепортируется да дм,то он оттуда не может выйти ему пишет что "Вы не на ДМ"
Как сделать чтобы при использовании команды "/Выход" игрок спавнился
Code:
if (strcmp(cmdtext, "/дм", true)==0 || strcmp(cmd, "/dm", true) == 0)
{
DM1[playerid] = 1;//установим игроку, что он на ДМ
SetPlayerVirtualWorld(playerid,1);//установим вирт. мир
SetPlayerInterior(playerid,0);//установим 0 инт. (улица)
ResetPlayerWeapons(playerid);//отними все оружие
GivePlayerWeapon(playerid, 24, 300);//дадим дигл
GivePlayerWeapon(playerid, 25, 100);//дадим дигл
SetPlayerHealth(playerid,100);//установим 100 хп
SendClientMessage(playerid, -1, "Чтобы выйти из ДМ пропишите: /выход.");//выдадим сообщение
switch(random(2))//2 рандомных телепорта на ДМ.
{
case 0: SetPlayerPos(playerid,2571.4932,2824.8291,10.8203);//1 позиция
case 1: SetPlayerPos(playerid,2604.3994,2828.9465,10.8203);//2 позиция
}
return 1;
}
if (strcmp(cmdtext, "/выход", true)==0 || strcmp(cmd, "/exit", true) == 0)
{
if (DM == 1)//если переменная ДМ = вирт. миру игрока то:
{
DM = GetPlayerVirtualWorld(playerid);//приравняем переменную DM к вирт. миру игрока (его мы установили при тп. на ДМ)
DM1[playerid] = 1;//сними условие нахождения игрока на ДМ
SpawnPlayer(playerid);//заспавним игрока
SetPlayerVirtualWorld(playerid,0);//установим 0 вирт. мир [!] обязательно!
GivePlayerWeapon(playerid, 1, 10);//
GivePlayerWeapon(playerid, 2, 20);//Дадим игроку пушки
GivePlayerWeapon(playerid, 3, 30);//
SetPlayerHealth(playerid,100);//Дадим хп.
}
if (DM == 0)return SendClientMessage(playerid,-1,"Вы не на ДМ.");//но если переменная DM не равна виртуальному миру игрок, то выдадим сообщение.
return 1;
}



Re: Проблема с ДМ ареной - seeeca - 25.12.2011

pawn Code:
if (strcmp(cmdtext, "/выход", true)==0 || strcmp(cmd, "/exit", true) == 0)
{
if (DM == 1)//если переменная ДМ = вирт. миру игрока то:
{
DM = GetPlayerVirtualWorld(playerid);//приравняем переменную DM к вирт. миру игрока (его мы установили при тп. на ДМ)
DM1[playerid] = 1;//сними условие нахождения игрока на ДМ
SpawnPlayer(playerid);//заспавним игрока
SetPlayerVirtualWorld(playerid,0);//установим 0 вирт. мир [!] обязательно!
GivePlayerWeapon(playerid, 1, 10);//
GivePlayerWeapon(playerid, 2, 20);//Дадим игроку пушки
GivePlayerWeapon(playerid, 3, 30);//
SetPlayerHealth(playerid,100);//Дадим хп.
}
if (DM1[playerid] == 0)return SendClientMessage(playerid,-1,"Вы не на ДМ.");//но если переменная DM не равна виртуальному миру игрок, то выдадим сообщение.
return 1;
}



Re: Проблема с ДМ ареной - [HHT]DRON - 25.12.2011

White_116,нет.seeeca,не помогло =(


Re: Проблема с ДМ ареной - seeeca - 25.12.2011

Вообщем так вот:
pawn Code:
if (strcmp(cmdtext, "/дм", true)==0 || strcmp(cmd, "/dm", true) == 0)
{
    SetPVarInt(playerid, "DMStatus", 1);
    SetPlayerVirtualWorld(playerid,1);//установим вирт. мир
    SetPlayerInterior(playerid,0);//установим 0 инт. (улица)
    ResetPlayerWeapons(playerid);//отними все оружие
    GivePlayerWeapon(playerid, 24, 300);//дадим дигл
    GivePlayerWeapon(playerid, 25, 100);//дадим дигл
    SetPlayerHealth(playerid,100);//установим 100 хп
    SendClientMessage(playerid, -1, "Чтобы выйти из ДМ пропишите: /выход.");//выдадим сообщение
    switch(random(2))//2 рандомных телепорта на ДМ.
    {
        case 0: SetPlayerPos(playerid,2571.4932,2824.8291,10.8203);//1 позиция
        case 1: SetPlayerPos(playerid,2604.3994,2828.9465,10.8203);//2 позиция
    }
    return 1;
}
if (strcmp(cmdtext, "/выход", true)==0 || strcmp(cmd, "/exit", true) == 0)
{
    if (GetPVarInt(playerid, "DMStatus") != 1) return SendClientMessage(playerid,-1,"Вы не на ДМ.");//но если переменная DM не равна виртуальному миру игрок, то выдадим сообщение.
    SetPlayerVirtualWorld(playerid,0);//установим 0 вирт. мир [!] обязательно!
    GivePlayerWeapon(playerid, 1, 10);//
    GivePlayerWeapon(playerid, 2, 20);//Дадим игроку пушки
    GivePlayerWeapon(playerid, 3, 30);//
    SetPlayerHealth(playerid,100);//Дадим хп.
    SetPVarInt(playerid, "DMStatus", 0);
    SpawnPlayer(playerid);//заспавним игрока
    return 1;
}



Re: Проблема с ДМ ареной - Mr.Merlin - 25.12.2011

Quote:
Originally Posted by seeeca
View Post
Вообщем так вот:
pawn Code:
if (strcmp(cmdtext, "/дм", true)==0 || strcmp(cmd, "/dm", true) == 0)
{
    SetPVarInt(playerid, "DMStatus", 1);
    SetPlayerVirtualWorld(playerid,1);//установим вирт. мир
    SetPlayerInterior(playerid,0);//установим 0 инт. (улица)
    ResetPlayerWeapons(playerid);//отними все оружие
    GivePlayerWeapon(playerid, 24, 300);//дадим дигл
    GivePlayerWeapon(playerid, 25, 100);//дадим дигл
    SetPlayerHealth(playerid,100);//установим 100 хп
    SendClientMessage(playerid, -1, "Чтобы выйти из ДМ пропишите: /выход.");//выдадим сообщение
    switch(random(2))//2 рандомных телепорта на ДМ.
    {
        case 0: SetPlayerPos(playerid,2571.4932,2824.8291,10.8203);//1 позиция
        case 1: SetPlayerPos(playerid,2604.3994,2828.9465,10.8203);//2 позиция
    }
    return 1;
}
if (strcmp(cmdtext, "/выход", true)==0 || strcmp(cmd, "/exit", true) == 0)
{
    if (GetPVarInt(playerid, "DMStatus") != 1) return SendClientMessage(playerid,-1,"Вы не на ДМ.");//но если переменная DM не равна виртуальному миру игрок, то выдадим сообщение.
    SetPlayerVirtualWorld(playerid,0);//установим 0 вирт. мир [!] обязательно!
    GivePlayerWeapon(playerid, 1, 10);//
    GivePlayerWeapon(playerid, 2, 20);//Дадим игроку пушки
    GivePlayerWeapon(playerid, 3, 30);//
    SetPlayerHealth(playerid,100);//Дадим хп.
    SetPVarInt(playerid, "DMStatus", 0);
    return 1;
}
Заспавнить забыл. А так все должно работать.


Re: Проблема с ДМ ареной - seeeca - 25.12.2011

Mr.Merlin спасибо, дописал (:


Re: Проблема с ДМ ареной - [HHT]DRON - 25.12.2011

Спасибо,вот еще проблемка,если игроку снесут хп он опять использует /дм,и хп восстановятся,как сделать чтобы он не смог использовать команды вообще на ДМ арене?


Re: Проблема с ДМ ареной - seeeca - 26.12.2011

pawn Code:
if (strcmp(cmdtext, "/дм", true)==0 || strcmp(cmd, "/dm", true) == 0)
{
    if (GetPVarInt(playerid, "DMStatus") == 1) return SendClientMessage(playerid,-1,"Вы уже на ДМ, ок.");
    SetPVarInt(playerid, "DMStatus", 1);
    SetPlayerVirtualWorld(playerid,1);//установим вирт. мир
    SetPlayerInterior(playerid,0);//установим 0 инт. (улица)
    ResetPlayerWeapons(playerid);//отними все оружие
    GivePlayerWeapon(playerid, 24, 300);//дадим дигл
    GivePlayerWeapon(playerid, 25, 100);//дадим дигл
    SetPlayerHealth(playerid,100);//установим 100 хп
    SendClientMessage(playerid, -1, "Чтобы выйти из ДМ пропишите: /выход.");//выдадим сообщение
    switch(random(2))//2 рандомных телепорта на ДМ.
    {
        case 0: SetPlayerPos(playerid,2571.4932,2824.8291,10.8203);//1 позиция
        case 1: SetPlayerPos(playerid,2604.3994,2828.9465,10.8203);//2 позиция
    }
    return 1;
}



Re: Проблема с ДМ ареной - [HHT]DRON - 26.12.2011

Спасибо.А если две ДМ арены будет или больше,как сделать чтобы,если игрок на ДМ арене то пока он не погибнет,не сможет телепортироваться на другие арены?(или использовать команды вообще)


Re: Проблема с ДМ ареной - seeeca - 26.12.2011

Quote:

или использовать команды вообще

Что то типо такого в OnPlayerCommandText:
pawn Code:
if(GetPVarInt(playerid, "DMStatus") == 1) return false;
------------------------
А по сути лучше записывать ид зоны в ПВар, а далее уже сравнивать...