also ich hab beim testen ein bisschen gesspielt mitn waffen, bissl auto gefahren, und so und es ist immer 78, 76, 77, 80, und so geworden
Beiträge von FoxHound
-
-
#include <a_samp>
#define dcmd(%1,%2,%3) if ((strcmp((%3)[1], #%1, true, (%2)) == 0) && ((((%3)[(%2) + 1] == 0) && (dcmd_%1(playerid, "")))||(((%3)[(%2) + 1] == 32) && (dcmd_%1(playerid, (%3)[(%2) + 2]))))) return 1
public OnPlayercommandText(playerid,cmdtext[])
{
dcmd(eject,5,cmdtext);
dcmd(kidnap,6,cmdtext);
return 0;
}dcmd_eject(playerid,params[])
{
new pID,string[128],pName[MAX_PLAYER_NAME],pIdName[MAX_PLAYER_NAME];
if(!IsPlayerInAnyVehicle(playerid)) { return SendClientMessage(playerid,AFAFAFAA,"Du bist in keinem Fahrzeug !"); }
if(GetPlayerState(playerid) != PLAYER_STATE_DRIVER) { return SendClientMessage(playerid,0xAFAFAFAA,"Du bist nicht der Fahrer !"); }
if(sscanf(params,"u",pID)) { return SendClientMessage(playerid,0xAFAFAFAA,"SYNTAX: /eject [playerid]"); }
if(!IsPlayerConnected(pID)) { return SendClientMessage(playerid,AFAFAFAA,"Ungültige ID!"); }
if(!IsPlayerInVehicle(pID,GetPlayerVehicleID(playerid)) { return SendClientMessage(playerid,COLOR_GREY,"Dieser Spieler ist nicht in deinem Fahrzeug !"); }
GetPlayerName(playerid,pName,sizeof(pName));
GetPlayerName(pID,pIdName,sizeof(pIdName));
RemovePlayerFromVehicle(pID);
format(string,sizeof(string),"Du hast %s aus deinem Auto geschmissen !",pIdName);
SendClientMessage(playerid,0xFFFFFFAA,string);
format(string,sizeof(string),"Fahrer %s hat dich aus seinem Auto geschmissen !",pName);
SendClientMessage(pID,0xFFFFFFAA,string);
return 1;
}dcmd_kidnap(playerid,params[])
{
new pID,seatid,string[64],pName[MAX_PLAYER_NAME],pIdName[MAX_PLAYER_NAME];
if(!IsPlayerInAnyVehicle(playerid)) { return SendClientMessage(playerid,AFAFAFAA,"Du bist in keinem Fahrzeug !"); }
if(GetPlayerState(playerid) != PLAYER_STATE_DRIVER) { return SendClientMessage(playerid,0xAFAFAFAA,"Du bist nicht der Fahrer !"); }
if(sscanf(params,"ud",pID,seatid)) { return SendClientMessage(playerid,0xAFAFAFAA,"SYNTAX: /kidnap [playerid] [SitzId]"); }
if(!IsPlayerConnected(pID)) { return SendClientMessage(playerid,AFAFAFAA,"Ungültige ID!"); }
if(GetDistanceBetweenPlayers(playerid,pID) > 7.0) { return SendClientMessage(playerid,COLOR_GREY,"Du bist zu weit entfernt !"); }
if(IsPlayerInAnyVehicle(pID) { return SendClientMessage(playerid,COLOR_GREY,"Dieser Spieler ist in einem Fahrzeug !"); }
GetPlayerName(playerid,pName,sizeof(pName));
GetPlayerName(pID,pIdName,sizeof(pIdName));
PutPlayerInVehicle(pID,GetPlayerVehicleID(playerid),seatid);
TogglePlayerControllable(pID,0);
format(string,sizeof(string),"Du hast %s gekidnappt!",pIdName);
SendClientMessage(playerid,COLOR_GREY,string);
GameTextForPlayer(pID,"~r~Kidnapped!",5000,3);
return 1;
}stock sscanf(string[], format[], {Float,_}:...)
{
#if defined isnull
if (isnull(string))
#else
if (string[0] == 0 || (string[0] == 1 && string[1] == 0))
#endif
{
return format[0];
}
#pragma tabsize 4
new
formatPos = 0,
stringPos = 0,
paramPos = 2,
paramCount = numargs(),
delim = ' ';
while (string[stringPos] && string[stringPos] <= ' ')
{
stringPos++;
}
while (paramPos < paramCount && string[stringPos])
{
switch (format[formatPos++])
{
case '\0':
{
return 0;
}
case 'i', 'd':
{
new
neg = 1,
num = 0,
ch = string[stringPos];
if (ch == '-')
{
neg = -1;
ch = string[++stringPos];
}
do
{
stringPos++;
if ('0' <= ch <= '9')
{
num = (num * 10) + (ch - '0');
}
else
{
return -1;
}
}
while ((ch = string[stringPos]) > ' ' && ch != delim);
setarg(paramPos, 0, num * neg);
}
case 'h', 'x':
{
new
num = 0,
ch = string[stringPos];
do
{
stringPos++;
switch (ch)
{
case 'x', 'X':
{
num = 0;
continue;
}
case '0' .. '9':
{
num = (num << 4) | (ch - '0');
}
case 'a' .. 'f':
{
num = (num << 4) | (ch - ('a' - 10));
}
case 'A' .. 'F':
{
num = (num << 4) | (ch - ('A' - 10));
}
default:
{
return -1;
}
}
}
while ((ch = string[stringPos]) > ' ' && ch != delim);
setarg(paramPos, 0, num);
}
case 'c':
{
setarg(paramPos, 0, string[stringPos++]);
}
case 'f':
{
setarg(paramPos, 0, _:floatstr(string[stringPos]));
}
case 'p':
{
delim = format[formatPos++];
continue;
}
case '\'':
{
new
end = formatPos - 1,
ch;
while ((ch = format[++end]) && ch != '\'') {}
if (!ch)
{
return -1;
}
format[end] = '\0';
if ((ch = strfind(string, format[formatPos], false, stringPos)) == -1)
{
if (format[end + 1])
{
return -1;
}
return 0;
}
format[end] = '\'';
stringPos = ch + (end - formatPos);
formatPos = end + 1;
}
case 'u':
{
new
end = stringPos - 1,
id = 0,
bool:num = true,
ch;
while ((ch = string[++end]) && ch != delim)
{
if (num)
{
if ('0' <= ch <= '9')
{
id = (id * 10) + (ch - '0');
}
else
{
num = false;
}
}
}
if (num && IsPlayerConnected(id))
{
setarg(paramPos, 0, id);
}
else
{
#if !defined foreach
#define foreach(%1,%2) for (new %2 = 0; %2 < MAX_PLAYERS; %2++) if (IsPlayerConnected(%2))
#define __SSCANF_FOREACH__
#endif
string[end] = '\0';
num = false;
new
name[MAX_PLAYER_NAME];
id = end - stringPos;
foreach (Player, playerid)
{
GetPlayerName(playerid, name, sizeof (name));
if (!strcmp(name, string[stringPos], true, id))
{
setarg(paramPos, 0, playerid);
num = true;
break;
}
}
if (!num)
{
setarg(paramPos, 0, INVALID_PLAYER_ID);
}
string[end] = ch;
#if defined __SSCANF_FOREACH__
#undef foreach
#undef __SSCANF_FOREACH__
#endif
}
stringPos = end;
}
case 's', 'z':
{
new
i = 0,
ch;
if (format[formatPos])
{
while ((ch = string[stringPos++]) && ch != delim)
{
setarg(paramPos, i++, ch);
}
if (!i)
{
return -1;
}
}
else
{
while ((ch = string[stringPos++]))
{
setarg(paramPos, i++, ch);
}
}
stringPos--;
setarg(paramPos, i, '\0');
}
default:
{
continue;
}
}
while (string[stringPos] && string[stringPos] != delim && string[stringPos] > ' ')
{
stringPos++;
}
while (string[stringPos] && (string[stringPos] == delim || string[stringPos] <= ' '))
{
stringPos++;
}
paramPos++;
}
do
{
if ((delim = format[formatPos++]) > ' ')
{
if (delim == '\'')
{
while ((delim = format[formatPos++]) && delim != '\'') {}
}
else if (delim != 'z')
{
return delim;
}
}
}
while (delim > ' ');
return 0;
};D
-
Kein codeschnipsel aber ein kleiner info
In SAMP 0.3 hab ich etwas kleines gemacht und rausgefunden, dass OnPlayerUpdate in 5 sekunden 80 mal, also in einer sekunde etwa 16 mal in der sekunde aufgerufen wird. -
lol, cool
so könnte man auch s0beit mit textdraws machen XD -
jo ich war mir nicht ganz sicher obs wirklich so ist, mit dem pausenmenü, abe rjetz bin ich das
-
10/10
eeeecht gaail man !! sieht voll æhnlich dem echten ! -
ne falsch
wenn der spieler aufm desktop ist, wird OnPlayerUpdate nicht aufgerufen.
Bei aufrufen von OnPlayerUpdate wird einer variable +1 wert dazugegeben.
aber wenn es 0 ist, bedeutet es das OnPlayerUpdate nicht aufgerufen wird und der spieler bekommt nen kick wenn er zu lange aufm deski ist -
wieso ins codeschnipsel ?
das ist doch keins o0 -
VORWORT
Hi, ich wollte dieses FS eig. einfach so machen aus langweile, aber als ich gesehen habe was daraus geworden ist, habe ich weitergemacht
und jetzt will ich es mit euch 'teilen'BESCHREIBUNG / HOW TO USE
Also ganz oben gibts eine definierung: "#define MAX_DESKTOP_TIME 120" da kann man ændern wieviele sekunden man maximal aufm Desktop sein darf.
Wenn er soo viele sekunden aufm desktop ist, bekommt er einen kick.DOWNLOAD
Show ADT.pwn - pastebin.comDownload Anti-Desktop_bY_FoxHound.rar - SolidFiles
Download Anti-Desktop_bY_FoxHound.rar - SendSpaceSCHLUSSWORT
Es ist ein einfaches FilterScript für noobs die es nicht können aber es brauchen
Also bitte nicht zu harte kommentareMit Freundlichen Grüßen
-
Sag mir dann nach dem testen wie du es findest
Und für einen neuen weißt du eigentlich zu viel
Aber ich muss noch überprüfen ob der Spieler zum C4 hinguckt -
wenns möglich ist, klar
das kenn ich auch mit dem spray, das ist so cool besonders die Trainingsmissionen mitm spray, das macht soo fun alter !
B2T XD :
ja ehm ich versuche es. mal sehn obs geht XD -
VORWORT
Hi, ich hatte bock drauf das zu machen, kommen wir zum thema
Auch wenn es schon viele solche æhnliche systeme gibt, wollte ich auch eins machen
Ich hatte dabei eine idee, und zwar es wie in Metal Gear Solid für PS1 zu machen
In MGS legt man eine bombe mit einer taste und man zündet sie mit der O-Taste (die taste mit dem man schlagen kann).
Also hier legt man die bombe mit einem cmd (siehe "commands") und man læsst es mit STRG/CTRL/Linke Maustaste hochgehenFUNKTIONEN & HOW TO USE
Es gibt oben im script eine definierung: "#define MAX_BOMBS".
Da könnt ihr hinschreiben maximal wieviele bomben ein spieler gleichzeitig legen kann.
Es ist standartweise als '3' definiert.
Man macht ingame /c4 und legt eine bombe, und man læsst es mit STRG/CTRL/Linke Maustaste hochgehenVIDEO
Externer Inhalt www.youtube.comInhalte von externen Seiten werden ohne Ihre Zustimmung nicht automatisch geladen und angezeigt.Durch die Aktivierung der externen Inhalte erklären Sie sich damit einverstanden, dass personenbezogene Daten an Drittplattformen übermittelt werden. Mehr Informationen dazu haben wir in unserer Datenschutzerklärung zur Verfügung gestellt.COMMAND
/c4
Legt eine C4-Bombe.DOWNLOAD
Show C4_SYS.pwn - pastebin.comDownload C4_System_bY_FoxHound.rar - SolidFiles
Download C4_System_bY_FoxHound.rar - SendSpaceSCHLUSSWORT
Ich hoffe ihr habt spaß damit
MfG, FoxHound -
Ne soviel ich weiß gibt es doch in s***it ein hack womit man seine energie auffüllen kann, der sich "Restore Health" nennt.
mein Anti-HP-Hack war für den Restore Health.
Deins ist fürs godmode, aber sehr sehr sehr nützlich du profi -
versuchen wir dann mal Anti-HP-Hack
new Float:lastHP[MAX_PLAYERS];
new ActivateHP[MAX_PLAYERS];public OnPlayerConnect(playerid)
{
ActivatedHP[playerid] = 0;
return 1;
}public OnPlayerSpawn(playerid)
{
ActivatedHP[playerid] = 1;
return 1;
}public OnPlayerDeath(playerid, killerid, reason)
{
ActivatedHP[playerid] = 0;
return 1;
}public OnPlayerUpdate(playerid)
{
if(ActivatedHP[playerid] == 1)
{
new Float:currentHP[MAX_PLAYERS];
GetPlayerHealth(playerid, currentHP[playerid]);
if(currentHP[playerid] > lastHP[playerid])
{
CallLocalFunction("OnPlayerRestoreHealth","uff",playerid,lastHP[playerid],currentHP[playerid]);
lastHP[playerid] = currentHP[playerid];
}
}
return 1;
}public OnPlayerRestoreHealth(playerid, Float:oldhealth, Float:newhealth)
{
/****************************** BEISPIEL ******************************/
SetPlayerHealth(playerid,oldhealth); //macht seine energie wieder auf den alten stand
/****************************** BEISPIEL ******************************/
return 1;
}aber man müsste die SetPlayerHealth und so funktionen ein bisschen ændern und auch wenn man das macht, wenn man die originalen NPC's im BSN zum essen benutzt, könnte das das essen verhindern
-
ah ja und wie kleinerOpa es gesagt hat, können wir auch abfragen ob der spieler nahe einem spieler ist und die feuertaste drückt
Aber so würden es auch klitzekleine bugs geben
und das gibts hier:
public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
{
if(newkeys == KEY_FIRE)
{
if(GetPlayerWeapon(playerid) == 0) //so wird diese funktion nur aufgerufen, wenn der spieler keine waffen hat
{
new Float:iX,Float:iY,Float:iZ;
for(new i = 0; i<MAX_PLAYERS; i++)
{
GetPlayerPos(i,iX,iY,iZ);
if(IsPlayerInRangeOfPoint(playerid, 2.0, iX, iY, iZ)
{
CallLocalFunction("OnPlayerPunchPlayer","uu",playerid,i);
}
}
}
}
}und das hier das callback, ganz unten ins script:
public OnPlayerPunchPlayer(playerid, punchedplayerid)
{
new string[64],playername[MAX_PLAYER_NAME],punchedplayername[MAX_PLAYER_NAME];
/******************************************** BEISPIELS SCRIPT ********************************************/
GetPlayerName(playerid,playername,sizeof(playername));
GetPlayerName(punchedplayerid,punchedplayername,sizeof(punchedplayername));
format(string,sizeof(string),"Du hast %s geschlagen !",punchedplayername);
SendClientMessage(playerid,0xFFFFFFAA,string);
format(string,sizeof(string),"Du wurdest von %s geschlagen !",playername);
SendClientMessage(punchedplayerid,0xFFFFFFAA,string);
/******************************************* BEISPIELS SCRIPT *******************************************/
return 1;
}
auch kP ob das so funzt xD -
Jedes mal wenn der spieler HP verliert (also auch wenn er runterfællt,geschlagen wird,beschossen wird,wenn er bei einer explosion steht und so):
new Float:lastHP[MAX_PLAYERS];
new ActivateHP[MAX_PLAYERS];public OnPlayerConnect(playerid)
{
ActivatedHP[playerid] = 0;
return 1;
}public OnPlayerSpawn(playerid)
{
ActivatedHP[playerid] = 1;
return 1;
}public OnPlayerDeath(playerid, killerid, reason)
{
ActivatedHP[playerid] = 0;
return 1;
}public OnPlayerUpdate(playerid)
{
if(ActivatedHP[playerid] == 1)
{
new Float:currentHP[MAX_PLAYERS];
GetPlayerHealth(playerid, currentHP[playerid]);
if(currentHP[playerid] < lastHP[playerid])
{
CallLocalFunction("OnPlayerLoseHealth","uff",playerid,lastHP[playerid],currentHP[playerid]);
lastHP[playerid] = currentHP[playerid];
}
}
return 1;
}und das ist das neue callback den du ganz unten einfügst:
public OnPlayerLoseHealth(playerid, Float:oldhealth, Float:newhealth)
{
/******** BEISPIELS SCRIPT ********/
new string[64];
new Float:lost_hp = oldhealth-newhealth;
format(string,sizeof(string),"Du hast %.2f gesundheit verloren !",lost_hp);
SendClientMessage(playerid,0xAFAFAFAA,string);
/******** BEISPIELS SCRIPT ********/
return 0;
}
so könnte man auch einen Anti-Health hack machenso würde es doch gehn, oder?
-
//OnPlayerCommandText
dcmd(eject,5,cmdtext);//Ganz unten ins script
dcmd_eject(playerid,params[])
{
new pID,string[128],pName[MAX_PLAYER_NAME],pIdName[MAX_PLAYER_NAME];
if(!IsPlayerInAnyVehicle(playerid)) { return SendClientMessage(playerid,AFAFAFAA,"Du bist in keinem Fahrzeug !"); }
if(GetPlayerState(playerid) != PLAYER_STATE_DRIVER) { return SendClientMessage(playerid,0xAFAFAFAA,"Du bist nicht der Fahrer !"); }
if(sscanf(params,"u",pID)) { return SendClientMessage(playerid,0xAFAFAFAA,"SYNTAX: /eject [playerid]"); }
if(!IsPlayerConnected(pID)) { return SendClientMessage(playerid,AFAFAFAA,"Ungültige ID!"); }
if(!IsPlayerInVehicle(pID,GetPlayerVehicleID(playerid)) { return SendClientMessage(playerid,COLOR_GREY,"Dieser Spieler ist nicht in deinem Fahrzeug !"); }
GetPlayerName(playerid,pName,sizeof(pName));
GetPlayerName(pID,pIdName,sizeof(pIdName));
RemovePlayerFromVehicle(pID);
format(string,sizeof(string),"Du hast %s aus deinem Auto geschmissen !",pIdName);
SendClientMessage(playerid,0xFFFFFFAA,string);
format(string,sizeof(string),"Fahrer %s hat dich aus seinem Auto geschmissen !",pName);
SendClientMessage(pID,0xFFFFFFAA,string);
return 1;
}----------------------------------------------------------------------------------------------------
//OnPlayerCommandText
dcmd(kidnap,6,cmdtext);//Ganz unten ins script
dcmd_kidnap(playerid,params[])
{
new pID,seatid,string[64],pName[MAX_PLAYER_NAME],pIdName[MAX_PLAYER_NAME];
if(!IsPlayerInAnyVehicle(playerid)) { return SendClientMessage(playerid,AFAFAFAA,"Du bist in keinem Fahrzeug !"); }
if(GetPlayerState(playerid) != PLAYER_STATE_DRIVER) { return SendClientMessage(playerid,0xAFAFAFAA,"Du bist nicht der Fahrer !"); }
if(sscanf(params,"ud",pID,seatid)) { return SendClientMessage(playerid,0xAFAFAFAA,"SYNTAX: /kidnap [playerid] [SitzId]"); }
if(!IsPlayerConnected(pID)) { return SendClientMessage(playerid,AFAFAFAA,"Ungültige ID!"); }
if(GetDistanceBetweenPlayers(playerid,pID) > 7.0) { return SendClientMessage(playerid,COLOR_GREY,"Du bist zu weit entfernt !"); }
if(IsPlayerInAnyVehicle(pID) { return SendClientMessage(playerid,COLOR_GREY,"Dieser Spieler ist in einem Fahrzeug !"); }
GetPlayerName(playerid,pName,sizeof(pName));
GetPlayerName(pID,pIdName,sizeof(pIdName));
PutPlayerInVehicle(pID,GetPlayerVehicleID(playerid),seatid);
TogglePlayerControllable(pID,0);
format(string,sizeof(string),"Du hast %s gekidnappt!",pIdName);
SendClientMessage(playerid,COLOR_GREY,string);
GameTextForPlayer(pID,"~r~Kidnapped!",5000,3);
return 1;
}müssten beide funzen
-
dcmd(givegun,7,cmdtext);
//ABküRZUNG:
dcmd(g,1,cmdtext);dcmd_givegun(playerid, params[])
{
new pID,gun,ammo;
if(!IsPlayerAdmin(playerid)) { return SendClientMessage(playerid, 0xFFFFFFAA, "Du darfst dieses Befehl nicht benutzen !"); }
if(sscanf(params, "udd", pID, gun, ammo)) { return SendClientMessage(playerid, 0xFFFFFFAA, "SYNTAX: (/g)ivegun [playerid/name] [WaffenID] [Munition]"); }
if(!IsPlayerConnected(pID)) { return SendClientMessage(playerid, 0xFFFFFFAA, "Ungültige ID !"); }
if(ammo < 1 || ammo > 999) { return SendClientMessage(playerid, 0xFFFFFFAA, "Minimum 1, Maximal 999 Munition !"); }
GivePlayerWeapon(pID, gun, ammo);
return 1;
}
//ABKüRZUNG VOM COMMAND:
dcmd_g(playerid, params[]) { return dcmd_givegun(playerid, params); }Boooooooaaaah, das macht voll SPAß dcmd zu scripten
//edit
und das beste ist, das der command so höllisch kurz ist (10 zeilen) obwohl es 3 parameter hat.
aber man kann es auch kürzer machen, in dem man das CMD so macht das es jeder spieler benutzen kann, und das man unendlich munition geben kann. dann würden es etwa 2 zeilen weniger sein (erste stufe mathe xD ) -
dcmd_givemoney(playerid,params[])
{
new sSumme,pID;
if(sscanf(params, "dd",pID,sSumme))
{
return SendClientMessage(playerid,COLOR_RED,"Nutze: /givemoney [playerid] [Betrag]");
}
if(!IsPlayerConnected(pID))
{
return SendClientMessage(playerid,COLOR_RED,"Kein Spieler mit angegebener ID Online");
}
new ThePlayer[MAX_PLAYER_NAME], string[128];
GetPlayerName(pID,ThePlayer,sizeof(ThePlayer));
format(string,sizeof(string),"%s (ID %d) bekam geld geschickt,Betrag: %s",ThePlayer,pID,sSumme);
GivePlayerMoney(playerid,-sSumme);
GivePlayerMoney(pID,sSumme);
return 1;
} -
hä? cool, andystyle! wenns funzt ists sooo geil xD
vielen dank