03.05.2010, 17:29
попробуй

|
Originally Posted by [JIeXa
]
не будет ![]() |

|
Originally Posted by [JIeXa
]
нет... там стоит return, поэтому он хоть как завершится ![]() и вообще, лучше не использовать эту фигню(рекурсию), чтоб проблем не было |
stock HexToInt(string[]) {
if (string[0]==0) return 0;
new i;
new cur=1;
new res=0;
for (i=strlen(string);i>0;i--) {
if (string[i-1]<58) res=res+cur*(string[i-1]-48); else res=res+cur*(string[i-1]-65+10);
cur=cur*16;
}
return res;
}
stock RGBAToHex( red, green, blue, alpha )
return (red * 16777216) + (green * 65536) + (blue * 256) + alpha;
Показывает ник убийцы / хп / броню /оружие с которого убил/ и расстояние
#include <a_samp>
#define FILTERSCRIPT
#define DIALOG_RULES 2
#pragma tabsize 0
forward Float:GetDistanceBetweenPlayers(p1,p2);
stock Float:GetDistanceBetweenPlayers(p1,p2)
{
new Float:x11,Float:y11,Float:z11,Float:x3,Float:y3,Float:z3;
if (!IsPlayerConnected(p1) || !IsPlayerConnected(p2))
{
return -1.00;
}
GetPlayerPos(p1,x11,y11,z11);
GetPlayerPos(p2,x3,y3,z3);
return floatsqroot(floatpower(floatabs(floatsub(x3,x11)),2)+floatpower(floatabs(floatsub(y3,y11)),2)+floatpower(floatabs(floatsub(z3,z11)),2));
}
public OnPlayerDeath(playerid, killerid, reason)
{
for(new i = 0; i < GetMaxPlayers(); i++)
{
if(IsPlayerConnected(i) && i != playerid)
{
new deathreason[20];
new PlayerNamea[30];
new string[256];
new Float:h;
new Float:a;
new n[30];
new msg[150];
GetPlayerHealth(killerid,h);
GetPlayerArmour(killerid,a);
GetPlayerName(killerid,n,30);
GetWeaponName(reason,deathreason, 20);
//if(killerid != INVALID_PLAYER_ID && reason != 255)
//{
//}
//else{
format(PlayerNamea,sizeof PlayerNamea," Инфо ",PlayerNamea);
msg="У вашего убийцы [%s] \nосталось [%d] XP \n и [%d] AR\n у бил вас с[%s]\n с расстояния [%d].";
format(string,sizeof string,msg,n,floatround(h),floatround(a),deathreason,floatround(GetDistanceBetweenPlayers(i,playerid)));
ShowPlayerDialog(playerid,DIALOG_RULES,0,PlayerNamea,string,"OK","ОТМЕНА");
//}
}
}
return 1;
}
stock Float:GetAngleToPoint(Float:x1, Float:y1, Float:x2, Float:y2)
{
new
Float:Angle;
Angle = atan2(y2 - y1, x2 - x1) + 270;
return Angle < 360 ? Angle : Angle - 360;
}
stock GetPlayerCameraLookAt(playerid, &Float:X, &Float:Y, &Float:Z)
{
new
Float:CamX, Float:CamY, Float:CamZ,
Float:FrX, Float:FrY, Float:FrZ;
GetPlayerCameraPos(playerid, CamX, CamY, CamZ);
GetPlayerCameraFrontVector(playerid, FrX, FrY, FrZ);
X = FrX + CamX;
Y = FrY + CamY;
Z = FrZ + CamZ;
}
#define MAX_PASWORD_LENGTH 30
stock GeneratePassword(passlength=8)
{
new tmp[MAX_PASWORD_LENGTH];
if(passlength <= MAX_PASWORD_LENGTH)
{
for(new i = 0; i < passlength; i++)
{
new mode = random(3);
if(mode == 0) tmp[i] = random('z' - 'a') + 'a';
else if(mode == 1) tmp[i] = toupper(random('z' - 'a') + 'a');
else if(mode == 2) valstr(tmp[i],random(9));
}
}
return tmp;
}
print(GeneratePassword()); print(GeneratePassword(10));
stock GetNeededWord(number,word1[],word2[],word3[]) // by Romanius
{
new ostatok = number % 100;
new out[50];
if((ostatok > 10) && (ostatok < 20)) strcat(out,word3);
else
{
switch(ostatok % 10)
{
case 0: strcat(out,word3);
case 1: strcat(out,word1);
case 2..4: strcat(out,word2);
case 5..9: strcat(out,word3);
default: strcat(out,word1);
}
}
return out;
}
new conectedplayers = 0;
public OnPlayerConnect(playerid)
{
conectedplayers++;
format(str,sizeof(str),"На сервере %d %s",conectedplayers,GetNeededWord(conectedplayers,"игрок","игрока","игроков"));
SendClientMessageToAll(0xFFFFFFAA,str);
}
public OnPlayerDisconnect(playerid)
{
conectedplayers--;
format(str,sizeof(str),"На сервере осталось %d %s",conectedplayers,GetNeededWord(conectedplayers,"игрок","игрока","игроков"));
SendClientMessageToAll(0xFFFFFFAA,str);
}
stock GetNeededWordEx(number,word[])
{
new ostatok = number % 100;
new out[50];
strcat(out,word);
if((ostatok > 10) && (ostatok < 20)) strcat(out,"ов");
else
{
switch(ostatok % 10)
{
case 0: strcat(out,"ов");
case 2..4: strcat(out,"а");
case 5..9: strcat(out,"ов");
}
}
return out;
}
)))
|
одно я могу сказать, точно про обратный отсчет, его надо русскими буквами писать, но по-белорусски (: тры, дуа, адын, ПОНЕСЛАСЯ |
)
stock Freeze(playerid, value){
switch(value){
case 0:ApplyAnimation(playerid,"GYMNASIUM","Pedals_fast",4.1,0,1,1,1,value);
case 1:ApplyAnimation(playerid,"GYMNASIUM","Pedals_fast",4.1,0,1,1,1,value);}
return 1;}

|
Originally Posted by s3ap
единственный обход, но и его можно заплатать
|
|
Originally Posted by stels
А именно - закрыть все машины для игрока
![]() |
|
А именно - закрыть все машины для игрока Cheesy |
|
public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger) { return 1; } |
|
Originally Posted by s3ap
Прокатит. Т.к. он не побежит пробывать открывать. Пробует он только когда на пассажирское место.
И if(ispassenger){new Float:X, Float:Y, Float:Z; GetPlayerPos(playerid, X, Y, Z); SetPlayerPos(playerid, X, Y, Z); Freeze(playerid, true);} |
public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger)
{
if(IsPlayerFreezed(playerid)){
TogglePlayerControllable(playerid,0);
TogglePlayerControllable(playerid,1);
}
return 1;
}