Sziasztok!
A segítségkérõ témában ihletett egy felhasználó ennek a scriptnek a megírására.
A lényege: ki tudsz hívni játékosokat párbajra, amit azok el tudnak fogadni.
Készítési idõ: kb. 15 perc.
Parancsok: /dual, /accept
Bónusz: Párbajra híváskor egy dialog fogad, amiben ki tudod választani a párbaj harcstílusát.
A nyertes kap +1 pontot és 5.000$-t!
Letöltési link: http://www.solidfiles.com/d/6efe94112e/
Tesztelve van, mûködik.
Kód:
#include <a_samp>
#include <sscanf2>
#include <dutils>
#include <fixchars>
#include <zcmd>
#pragma unused ret_memcpy
new boxengedely[MAX_PLAYERS];
new boxos[MAX_PLAYERS];
new boxol[MAX_PLAYERS];
new stilus[MAX_PLAYERS];
new tars[MAX_PLAYERS];
CMD:duel(playerid, params[])
{
new gid;
if(sscanf(params, \"u\", gid)) return SendClientMessage(playerid, -1, \"Használat: /duel [Játékos]\");
if(gid == INVALID_PLAYER_ID || IsPlayerNPC(gid)) return SendClientMessage(playerid, -1, \"Hibás játékos!\");
if(gid == playerid) return SendClientMessage(playerid, -1, \"Magadat nem hívhatod ki párbajozni!\");
if(boxol[playerid] == 1) return SendClientMessage(playerid, -1, \"Te most boxolsz!\");
if(boxol[gid] == 1) return SendClientMessage(playerid, -1, \"A játékos most boxol!\");
boxengedely[gid] = 1;
boxos[gid] = playerid;
tars[playerid] = gid;
ShowPlayerDialog(playerid, 0, DIALOG_STYLE_LIST, \"Milyen harcmódot akarsz választani?\", \"Normális\\nBox\\nKung-fu\\nKneehead\\nGrabkick\\nElbow\", \"OK\", \"Mégse\");
return 1;
}
CMD:accept(playerid, params[])
{
new name[MAX_PLAYER_NAME], gname[MAX_PLAYER_NAME];
GetPlayerName(playerid, name, sizeof(name));
GetPlayerName(boxos[playerid], gname, sizeof(gname));
if(boxengedely[playerid] == 0) return SendClientMessage(playerid, -1, \"Téged még senki sem hívott boxolni! Ha valakivel párbajozni akarsz, írd be: /duel\");
if(boxol[playerid] == 1) return SendClientMessage(playerid, -1, \"Te most boxolsz!\");
SetPlayerInterior(playerid, 5);
SetPlayerPos(playerid,758.5104,8.9748,1001.1639);
SetPlayerInterior(boxos[playerid], 5);
SetPlayerPos(boxos[playerid], 763.0402,13.4526,1001.1639);
SetPlayerVirtualWorld(playerid, 1);
SetPlayerVirtualWorld(boxos[playerid], 1);
boxol[playerid] = 1;
boxol[boxos[playerid]] = 1;
boxengedely[playerid] = 0;
SetPlayerFightingStyle(playerid, stilus[boxos[playerid]]);
SetPlayerFightingStyle(boxos[playerid], stilus[boxos[playerid]]);
new str[128];
format(str, sizeof(str), \"A harc %s és %s között elkezdõdött!\", name, gname);
SendClientMessageToAll(-1, str);
ResetPlayerWeapons(playerid);
ResetPlayerWeapons(boxos[playerid]);
return 1;
}
public OnFilterScriptInit()
{
print(\"\\n--------------------------------------\");
print(\" rBox FilterScript by Rupert\");
print(\"--------------------------------------\\n\");
return 1;
}
public OnFilterScriptExit()
{
print(\"Box FS bezarva.\");
return 1;
}
public OnPlayerConnect(playerid)
{
boxengedely[playerid] = 0;
boxos[playerid] = -1;
boxol[playerid] = 0;
stilus[playerid] = 4;
tars[playerid] = -1;
return 1;
}
public OnPlayerDisconnect(playerid, reason)
{
if(boxol[playerid] == 1)
{
new str2[128];
new name[MAX_PLAYER_NAME];
GetPlayerName(playerid, name, MAX_PLAYER_NAME);
SetPlayerFightingStyle(boxos[playerid], 4);
SpawnPlayer(boxos[playerid]);
SetPlayerVirtualWorld(boxos[playerid], 0);
format(str2, sizeof(str2), \"Nyertél a párbajban %s ellen, mivel az megfumadott!\", name);
new sc;
sc = GetPlayerScore(boxos[playerid]);
SetPlayerScore(boxos[playerid], sc+1);
GivePlayerMoney(boxos[playerid], 5000);
SendClientMessage(boxos[playerid], -1, str2);
boxol[playerid] = 0;
boxol[boxos[playerid]] = 0;
boxengedely[playerid] = 0;
boxengedely[boxos[playerid]] = 0;
boxos[playerid] = -1;
boxos[boxos[playerid]] = -1;
stilus[playerid] = 4;
stilus[boxos[playerid]] = 4;
tars[playerid] = -1;
tars[boxos[playerid]] = -1;
}
return 1;
}
public OnPlayerDeath(playerid, killerid, reason)
{
if(boxol[playerid] == 1)
{
new name[MAX_PLAYER_NAME], gname[MAX_PLAYER_NAME];
GetPlayerName(playerid, name, sizeof(name));
GetPlayerName(killerid, gname, sizeof(gname));
new str[128], str2[128];
format(str, sizeof(str), \"Vesztettél a párbajban %s ellen!\", gname);
format(str2, sizeof(str2), \"Nyertél a párbajban %s ellen, és kaptál 1 pontot + 5.000$-t!\", name);
SendClientMessage(playerid, -1, str);
SendClientMessage(killerid, -1, str2);
SetPlayerVirtualWorld(killerid, 0);
SetPlayerVirtualWorld(playerid, 0);
boxol[playerid] = 0;
boxol[killerid] = 0;
boxengedely[playerid] = 0;
boxengedely[killerid] = 0;
boxos[playerid] = -1;
boxos[killerid] = -1;
stilus[playerid] = 4;
stilus[killerid] = 4;
tars[playerid] = -1;
tars[killerid] = -1;
SetPlayerFightingStyle(killerid, 4);
SetPlayerFightingStyle(playerid, 4);
SetPlayerHealth(killerid, 100);
new sc = GetPlayerScore(killerid);
SetPlayerScore(playerid, sc+1);
GivePlayerMoney(killerid, 5000);
SpawnPlayer(killerid);
}
return 1;
}
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
if(dialogid == 0)
{
if(!response) return 0;
else
{
if(listitem == 0)
{
new str[128], name[MAX_PLAYER_NAME];
GetPlayerName(playerid, name, MAX_PLAYER_NAME);
stilus[playerid] = 4;
format(str, sizeof(str), \"Meghívott Téged %s párbajozni normál harcstílussal! Elfogadáshoz: /accept\", name);
SendClientMessage(playerid, -1, \"Meghívtad a játékost normál harcstílussal párbajozni!\");
SendClientMessage(tars[playerid], -1, str);
}
if(listitem == 1)
{
new str[128], name[MAX_PLAYER_NAME];
GetPlayerName(playerid, name, MAX_PLAYER_NAME);
stilus[playerid] = 5;
format(str, sizeof(str), \"Meghívott Téged %s párbajozni box harcstílussal!\", name);
SendClientMessage(playerid, -1, \"Meghívtad a játékost box harcstílussal párbajozni!\");
SendClientMessage(tars[playerid], -1, str);
}
if(listitem == 2)
{
new str[128], name[MAX_PLAYER_NAME];
GetPlayerName(playerid, name, MAX_PLAYER_NAME);
stilus[playerid] = 6;
format(str, sizeof(str), \"Meghívott Téged %s párbajozni kungfu harcstílussal!\", name);
SendClientMessage(playerid, -1, \"Meghívtad a játékost kungfu harcstílussal párbajozni!\");
SendClientMessage(tars[playerid], -1, str);
}
if(listitem == 3)
{
new str[128], name[MAX_PLAYER_NAME];
GetPlayerName(playerid, name, MAX_PLAYER_NAME);
stilus[playerid] = 7;
format(str, sizeof(str), \"Meghívott Téged %s párbajozni kneehead harcstílussal!\", name);
SendClientMessage(playerid, -1, \"Meghívtad a játékost kneehead harcstílussal párbajozni!\");
SendClientMessage(tars[playerid], -1, str);
}
if(listitem == 4)
{
new str[128], name[MAX_PLAYER_NAME];
GetPlayerName(playerid, name, MAX_PLAYER_NAME);
stilus[playerid] = 15;
format(str, sizeof(str), \"Meghívott Téged %s párbajozni grabkick harcstílussal!\", name);
SendClientMessage(playerid, -1, \"Meghívtad a játékost grabkick harcstílussal párbajozni!\");
SendClientMessage(tars[playerid], -1, str);
}
if(listitem == 5)
{
new str[128], name[MAX_PLAYER_NAME];
GetPlayerName(playerid, name, MAX_PLAYER_NAME);
stilus[playerid] = 16;
format(str, sizeof(str), \"Meghívott Téged %s párbajozni elbow harcstílussal!\", name);
SendClientMessage(playerid, -1, \"Meghívtad a játékost elbow harcstílussal párbajozni!\");
SendClientMessage(tars[playerid], -1, str);
}
}
}
return 1;
}
public OnPlayerUpdate(playerid)
{
if(boxol[playerid] == 1)
{
Vissz*rak(playerid, boxos[playerid]);
}
return 1;
}
stock Vissz*rak(p1, p2)
{
new Float:x, Float:y, Float:z;
GetPlayerPos(p1, x, y, z);
if(!IsPlayerInRangeOfPoint(p2, 5.0, x, y, z))
{
SetPlayerInterior(p1, 5);
SetPlayerPos(p1,758.5104,8.9748,1001.1639);
SetPlayerInterior(p2, 5);
SetPlayerPos(p2, 763.0402,13.4526,1001.1639);
SendClientMessage(p1, -1, \"Maradjatok a helyeteken!\");
SendClientMessage(p2, -1, \"Maradjatok a helyeteken!\");
}
}