Szerző Téma: rBox - Box-párbaj script!  (Megtekintve 4179 alkalommal)

Nem elérhető Rupert

  • 2301
    • Profil megtekintése
rBox - Box-párbaj script!
« Dátum: 2012. július 27. - 16:42:10 »
+8 Show voters
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!\");
}
}
« Utoljára szerkesztve: 2012. július 27. - 18:04:41 írta Rupert »

rBox - Box-párbaj script!
« Válasz #1 Dátum: 2012. július 27. - 16:46:57 »
0 Show voters
egész jól néz ki
azt is beletehetnéd hogyha valamelyik megnyeri a párbajt az kap 500$-árt mint ami a filmekben van. Tét..
 ;D

Nem elérhető Rupert

  • 2301
    • Profil megtekintése
rBox - Box-párbaj script!
« Válasz #2 Dátum: 2012. július 27. - 16:47:51 »
0 Show voters
Idézetet írta: DJтoυcн date=1343400417\" data-ipsquote-contentapp=\"forums\" data-ipsquote-contenttype=\"forums\" data-ipsquote-contentid=\"25083\" data-ipsquote-contentclass=\"forums_Topic
egész jól néz ki
azt is beletehetnéd hogyha valamelyik megnyeri a párbajt az kap 500$-árt mint ami a filmekben van. Tét..
 ;D
 
Jó hogy szólsz! Elfelejtettem mondani, a nyertes kap 5.000$-t és +1 pontot.

rBox - Box-párbaj script!
« Válasz #3 Dátum: 2012. július 27. - 16:49:34 »
0 Show voters
format(str2, sizeof(str2), \"Nyertél a párbajban %s ellen, és kaptál 1 pontot + 5.000$-t!\", name);

 
jahh már látom :D:D
megy a +!!  ;D

Nem elérhető JackBronson

  • 1499
  • ??
    • Profil megtekintése
rBox - Box-párbaj script!
« Válasz #4 Dátum: 2012. július 27. - 16:58:05 »
0 Show voters
Ja jólett majd megnézem hogy jó e! :)

Nem elérhető Rupert

  • 2301
    • Profil megtekintése
rBox - Box-párbaj script!
« Válasz #5 Dátum: 2012. július 27. - 16:58:35 »
0 Show voters
Idézetet írta: JaCk date=1343401085\" data-ipsquote-contentapp=\"forums\" data-ipsquote-contenttype=\"forums\" data-ipsquote-contentid=\"25083\" data-ipsquote-contentclass=\"forums_Topic
Ja jólett majd megnézem hogy jó e! :)
 
Tesztelve, mûködik.  ;)

Nem elérhető Spedy

  • 227
    • Profil megtekintése
rBox - Box-párbaj script!
« Válasz #6 Dátum: 2012. július 27. - 17:15:46 »
0 Show voters
EGy valamit hiányolok belõle:D hiba üzenet ha nincs fent az az id-jü.
De amugy Jó lett GRAT!

Nem elérhető Rupert

  • 2301
    • Profil megtekintése
rBox - Box-párbaj script!
« Válasz #7 Dátum: 2012. július 27. - 17:16:54 »
0 Show voters
Nézd meg a forráskódot mielõtt ilyet írsz. Benne van. ;)

rBox - Box-párbaj script!
« Válasz #8 Dátum: 2012. július 27. - 17:42:45 »
0 Show voters
Régebben volt egy hasonló scriptem
LS GYM box arénájába tette a playereket, külön WVbe.
Én használtam egy bizonyos \'GetDistanceBetweenPlayers\' függvényt, ami megakadályoztam hogy az egyik játékos láma módjára elteleportáljon, a másik pedig fusson utána, mert a box szerintem nem errõl szól.
Használhatnád te is. :)


Szép munka.

Nem elérhető Rupert

  • 2301
    • Profil megtekintése
rBox - Box-párbaj script!
« Válasz #9 Dátum: 2012. július 27. - 18:06:16 »
0 Show voters
Köszönöm TengeriMalac a tanácsaid, frissítettem egyedi módszerrel!
Javítások:
 
  • Ha az egyik játékos kilép, akkor a másik játékos kap pénzt meg pontot, mintha megölte volna.

  • Ha a játékosok túlságosan eltávolodnak egymástól, a rendszer visszarakja õket az eredeti helyükre.


Nem elérhető nyE

  • 1745
    • Profil megtekintése
rBox - Box-párbaj script!
« Válasz #10 Dátum: 2012. július 27. - 19:42:25 »
0 Show voters
Az ötlet jó! Szép munka :D Viszont, ha valaki leszedi akkor ezekre figyeljen mert hibát fog írni a csillagra:
 

public OnPlayerUpdate(playerid)
{
if(boxol[playerid] == 1)
{
   Visszarak(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!\");
}
}
 
[/quote]

Nem elérhető Rupert

  • 2301
    • Profil megtekintése
rBox - Box-párbaj script!
« Válasz #11 Dátum: 2012. július 27. - 19:44:08 »
0 Show voters
Idézetet írta: Antonyo date=1343410945\" data-ipsquote-contentapp=\"forums\" data-ipsquote-contenttype=\"forums\" data-ipsquote-contentid=\"25083\" data-ipsquote-contentclass=\"forums_Topic
Az ötlet jó! Szép munka :D Viszont, ha valaki leszedi akkor ezekre figyeljen mert hibát fog írni a csillagra:
 

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!\");
}
}
 

[/quote]
Kivéve ha normálisan letölti, és nem kimásolja a kódot. ;)

Nem elérhető nyE

  • 1745
    • Profil megtekintése
rBox - Box-párbaj script!
« Válasz #12 Dátum: 2012. július 27. - 19:48:14 »
0 Show voters
Idézetet írta: Rupert date=1343411048\" data-ipsquote-contentapp=\"forums\" data-ipsquote-contenttype=\"forums\" data-ipsquote-contentid=\"25083\" data-ipsquote-contentclass=\"forums_Topic


Az ötlet jó! Szép munka :D Viszont, ha valaki leszedi akkor ezekre figyeljen mert hibát fog írni a csillagra:
 

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!\");
}
}
 

[/quote]
Kivéve ha normálisan letölti, és nem kimásolja a kódot. ;)
 
[/quote]
Na igen, ez igaz :D

rBox - Box-párbaj script!
« Válasz #13 Dátum: 2012. július 27. - 21:40:07 »
0 Show voters
Egész jó munka grat!

rBox - Box-párbaj script!
« Válasz #14 Dátum: 2012. július 28. - 12:14:55 »
0 Show voters
Király lett épp egy ilyen scriptre lett szükségem köszi ment  a +

 

SimplePortal 2.3.7 © 2008-2024, SimplePortal