[12:59:20] Server Plugins
[12:59:20] --------------
[12:59:20] Loaded 0 plugins.
Es werden ja auch 0 Plugins geladen ![]()
..hast du in der server.cfg auch die Plugins mit .so hingeschrieben? (z.B. plugins streamer.so mysql.so)
mfg. ![]()
[12:59:20] Server Plugins
[12:59:20] --------------
[12:59:20] Loaded 0 plugins.
Es werden ja auch 0 Plugins geladen ![]()
..hast du in der server.cfg auch die Plugins mit .so hingeschrieben? (z.B. plugins streamer.so mysql.so)
mfg. ![]()
Ich hab hier auch mal wieder paar Sachen ![]()
SWAP
Als erstes die gute alte SWAP Funktion ohne Variablen (ich weiß ist schon alt, habe ich hier aber noch nicht gesehen):
#define SWAP(%0,%1) (((%0)^=(%1)),((%1)^=(%0)),((%0)^=(%1)))
new a=5,b=10;
SWAP(a,b);
printf("a: %d | b: %d",a,b); //->Output: a: 10 | b: 5
TotalBits
Als nächstes eine sehr nützliche Funktion, wenn man die Anzahl an 1nser Bits in einer Zahl bestimmen will:
Beispiele:
1. 0xF = 15 = 0b1111 //Wir sehen hier 4x die 1
2. 0xA = 10 = 0b1010 //Hier sehen wir 2x die 1
Ich denke jedem ist klar, was ich meine um dies zu ermitteln, ohne Schleife, kann man Bit-Shifting verwenden:
#include <a_samp>
main() {
printf("%d",GetTotalBits(0xF)); //-> 4
printf("%d",GetTotalBits(10)); //-> 2
}
stock GetTotalBits(v) {
v -= ((v >> 1) & 0x55555555),v = (v & 0x33333333) + ((v >> 2) & 0x33333333);
return (((v + (v >> 4) & 0xF0F0F0F) * 0x1010101) >> 0x18);
}
Kleiner bzw Größer
Wenn man 2 Variablen hat, x = 13 und y = 14 und prüfen will welche kleiner bzw größer ist, kann man das so machen:
#define min(%0,%1) (((%0)<(%1))?(%0):(%1))
#define max(%0,%1) (((%0)>(%1))?(%0):(%1))
new x = 13, y = 14;
new r = min(x,y); //r = 13
new z = max(x,y); //z = 14
/*
Man könnte das auch durch Bit-Shifting lösen (da das der Titel ist :D):
new x = 13, y = 14;
new r = y ^ ((x ^ y) & -(x < y)); //Das gibt das minimum zurück (13)
new z = x ^ ((x ^ y) & -(x < y)); //Das gibt das maximum zurück (14)
Allerdings ist diese Variante wesentlich langsamer, als der ternary Operator :)
*/
Viel Spaß damit ![]()
mfg. ![]()
also muss man das so machen?
richtig ![]()
Wie frage ich die kleinste id die online ist ab, und wie die 2 kleinste id die online ist, usw.
Du speicherst die Werte in einem Array:
new tmp[MAX_PLAYERS],idx;
for(new i; i<MAX_PLAYERS; i++) if(IsPlayerConnected(i)) tmp[idx] = i,idx++;
//und dann sortierst du das Array:
d_Sort(tmp, idx);
//und jetzt steht die kleinste ID in:
tmp[0]; //Kleinste ID
tmp[1]; //zweit kleinste ID ...usw
//Das unten ins Skript
stock d_Sort(x[], const anz) {
for (new i,tmp,j; i < anz; i++) {
for (j=0; j < anz - i - 1; j++) {
if (x[j] > x[j + 1]) tmp = x[j],x[j] = x[j + 1],x[j + 1] = tmp;
}
}
return 1;
}
mfg. ![]()
File or function is not found
Füg mal das Plugin mit ein: nativechecker
und poste dann mal, was in der Log Datei steht.
mfg. ![]()
Ja, ich glaube schon, könntest du mir eventuell einen Link geben ?
Das merkwürdige ist ja, dass er den Server bei SA:MP als Online sehen kan
Dann ist es entweder ein Versionen Problem, oder er nutzt einen unzulässigen Namen, oder er wird vom Skript aus direkt gebannt / gekickt ![]()
Mach doch einfach mal unter OnPlayerConnect einen print-Debug rein und schau was da so passiert ![]()
mfg. ![]()
Sorry wenn ich hier mal was schreibe...aber:
1. Das hier ist die falsche Sektion mein Lieber, lösche deinen Post umgehend sonst wirst du weiter verwarnt werden (Richtig wäre hier: http://forum.sa-mp.de/handelse…-sa-mp-mta-sa-marktplatz/) ![]()
2. Du suchst ein Skript...obwohl ihr sein Selfmade-Skript habt?!
([ SUCHE ] German Next Reallife [Selfmade] sucht Scripter)
Naja..viel Erfolg ![]()
Funktioniert leider nicht..
Nutzt du denn das neuste ocmd Plugin? :o
if(CallLocalFunction(ocmdStr,"ds",playerid,cmdtext[i+1])) return 1;
CallLocalFunction kann kein einzelnes NULL-Byte als String übermitteln.
Also schreibe es mal so:
if(CallLocalFunction(ocmdStr,"ds",playerid,((cmdtext[i+1] == '\0')?(" "):(cmdtext[i+1])))) return 1;
mfg. ![]()
Kann mir jemand helfen?
Du musst oben im Skript #include <streamer> schreiben ![]()
Habt ihr eine Idee?
Eigentlich sollte das so sein, öffne evtl mal die .txt Datei mit Notepad++? ![]()
Hier der Code.
Nein, poste den normalen server_log ![]()
Und was ich gemacht habe, solllte doch funktionieren ?
Nein, wenn du mit cache Funktionen arbeitest, musst du auch entweder mysql_function_query oder mysql_pquery oder mysql_tquery verwenden...aber nicht nur mysql_query!
Mit mysql_query und mysql_store_result kannst du nicht auf cache Funktionen zugreifen, sondern hast dann halt direkt ein result vorliegen.
Wie gesagt, schau dir doch einfach die Tutorials an, ist ja nicht soviel.
mfg. ![]()
Du solltest dich mal für ein Plugin entscheiden ![]()
Wenn du mit Threads arbeiten willst, schau dir lieber nochmal ein paar Tutorials an: http://forum.sa-mp.com/showthread.php?t=337810
mfg. ![]()
Ist mir schon kla, bloß wie kann ein Script ein Befehl senden?
Einfach so:
SetTimer("@destroy",1000*30,0);
@destroy();@destroy() return OnPlayerCommandText(0,"/destroycars");
Wenn du allerdings eine Admin-Abfrage o.ä. in diesem Command hast, musst du einfach den Code in den Timer kopieren ![]()
mfg. ![]()
Die Tiere sind attached am Körper des Spielers.
Also...du attachst eine Kuh an den Spieler und ehm was passiert, wenn er in ein Auto steigt :o
Machst du das mit AttachObjectToPlayer oder SetPlayerAttachedObject...dann wenn die Kuh eine Kollision hat, kann man damit wunderbar andere Spieler trollen, indem man sich so stellt, dass die Kuh auf der Straße steht oder, dass man sich ganz schnell dreht und dann haut man alles mögliche um
Besonders im GangFight oder so, kann man damit schüsse abwehren..etc xD
Schreib dein Skript mal so:
#include <a_samp>
#define SCM SendClientMessage
new govbarrier1;
forward govbarrier1close();
public OnGameModeInit()
{
// Hier wird es erstellt:
govbarrier1=CreateObject(968, 1284.22388, -2059.59863, 58.54250, 0.00000, 90.00000, 90.00000); // Gov Barrier
return 1;
}
COMMAND:mv(playerid, params[])
{
if(!IsPlayerInRangeOfPoint(playerid,1284.24829, -2056.05029, 58.23990,5)) return SCM(playerid,-1,"Du befindest dich nicht am Tor!");
MoveObject(govbarrier1,1284.22388, -2059.59863, 58.5425, 5.0, 0.00000, 0.00000, 90.00000);
SetTimer("govbarrier1close",10000,0);
SendClientMessage(playerid, COLOR_LIGHTBLUE,"Die Schranke schliesst in 10 Sekunden von selbst!");
return 1;
}
public govbarrier1close() return MoveObject(govbarrier1,1284.22388, -2059.59863, 58.54250, 5.0, 0.00000, 90.00000, 90.00000);
mysql_escape_string(Spielername(playerid), Spielername(playerid));
Ich wollte mal kurz etwas dazu sagen, dass ist absoluter Schwachsinn.
Das wäre wie wenn man folgendes versucht:
func() = "Hey";
/*
In Pawn kann man func() = "Hallo"; zwar wirklich ohne Fehler compilen, aber das macht keinen Sinn. Denn man kann einer Funktion keine neuen Werte zuweisen, da diese durch das return festgelegt werden.
*/
printf("%s",func()); //Ich hoffe jedem ist klar, dass hier 'hallo' rauskommt...und nicht Hey
stock func() {
new var[] = "'hallo'";
return var;
}
mfg. ![]()