Skocz do zawartości

Rekomendowane odpowiedzi

Zaliczam :) mój kod

native print(const string[]);
forward OnFilterScriptInit();
public OnFilterScriptInit()
{
    print("Zadanie PawnGame #61\n"); 
	 
	#emit stack  0xffffff80
	#emit zero.pri
	#emit addr.alt   0xffffff80
	#emit fill  50
	#emit addr.pri 0xffffff80
	#emit push.pri
	#emit const.pri 0x50
	#emit pop.alt
	#emit stor.I
	#emit addr.pri 0xffffff80
	#emit const.alt 0x4
	#emit add
	#emit push.pri
	#emit const.pri 0x61
	#emit pop.alt
	#emit stor.I
	#emit addr.pri 0xffffff80
	#emit const.alt 0x8
	#emit add
	#emit push.pri
	#emit const.pri 0x77
	#emit pop.alt
	#emit stor.I
	#emit addr.pri 0xffffff80
	#emit const.alt 0xc
	#emit add
	#emit push.pri
	#emit const.pri 0x6e
	#emit pop.alt
	#emit stor.I
	#emit addr.pri 0xffffff80
	#emit const.alt 0x10
	#emit add
	#emit push.pri
	#emit const.pri 0x47
	#emit pop.alt
	#emit stor.I
	#emit addr.pri 0xffffff80
	#emit const.alt 0x14
	#emit add
	#emit push.pri
	#emit const.pri 0x61
	#emit pop.alt
	#emit stor.I
	#emit addr.pri 0xffffff80
	#emit const.alt 0x18
	#emit add
	#emit push.pri
	#emit const.pri 0x6d
	#emit pop.alt
	#emit stor.I
	#emit addr.pri 0xffffff80
	#emit const.alt 0x1c
	#emit add
	#emit push.pri
	#emit const.pri 0x65
	#emit pop.alt
	#emit stor.I
	#emit addr.pri 0xffffff80
	#emit const.alt 0x20
	#emit add
	#emit push.pri
	#emit const.pri 0x20
	#emit pop.alt
	#emit stor.I
	#emit addr.pri 0xffffff80
	#emit const.alt 0x24
	#emit add
	#emit push.pri
	#emit const.pri 0x23
	#emit pop.alt
	#emit stor.I
	#emit addr.pri 0xffffff80
	#emit const.alt 0x28
	#emit add
	#emit push.pri
	#emit const.pri 0x36
	#emit pop.alt
	#emit stor.I
	#emit addr.pri 0xffffff80
	#emit const.alt 0x2c
	#emit add
	#emit push.pri
	#emit const.pri 0x31
	#emit pop.alt
	#emit stor.I
	#emit addr.pri 0xffffff80
	#emit push.pri
	#emit push.C 4
	#emit sysreq.C print
	#emit stack  8
	#emit stack  80
	#emit zero.pri
	#emit retn
}
Edytowane przez mrdrifter

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Znowu ja i znowu coś z ASM :)

 
PG #62
 
Wykonaj skrypt który wylosuje losową dużą literę (A-Z).
Ma wyglądać to tak: 

XaihmIx.png - J to wylosowana liczba. 

 

Takie coś można napisać w kilku liniach, ja dla zabawy zrobiłem w kilkuset. 

 

AMX: ap.zip

 

Urywek kodu: http://i.imgur.com/waeKotZ.png

 

Miłej zabawy.

Edytowane przez P3TRUS

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

I to ma być zrobione w tym śmiesznym sampowym asm? Dałbyś coś trudnego a nie takie duperele xd.

BTW Napisałbym coś takiego jako wstawka assemblerowa do delphi lub c++ ale nie wiem jak jest w pawn z asm i nie chcę mi się wchodzić w ten shit.

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

#include <a_samp>

new tab[24][] =
{
	{"a"},
	{"b"},
	{"c"},
	{"d"},
	{"e"},
	{"f"},
	{"g"},
	{"h"},
	{"i"},
	{"j"},
	{"k"},
	{"l"},
	{"m"},
	{"n"},
	{"o"},
	{"p"},
	{"r"},
	{"s"},
	{"t"},
	{"u"},
	{"w"},
	{"x"},
	{"y"},
	{"z"}
};

public OnFilterScriptInit()
{
	printf("Wylosowałeś literke: %s", tab[random(23)]);
	return true;
}
? :D

//

Niechce mi się wymyślać tego co ty tam masz :P

Edytowane przez 3MMC

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach
#include <a_samp>

new tab[24][] =
{
	{"a"},
	{"b"},
	{"c"},
	{"d"},
	{"e"},
	{"f"},
	{"g"},
	{"h"},
	{"i"},
	{"j"},
	{"k"},
	{"l"},
	{"m"},
	{"n"},
	{"o"},
	{"p"},
	{"r"},
	{"s"},
	{"t"},
	{"u"},
	{"w"},
	{"x"},
	{"y"},
	{"z"}
};

public OnFilterScriptInit()
{
	printf("Wylosowałeś literke: %s", tab[random(23)]);
	return true;
}
? :D

 

XDD

 

Twoje da się skrócić. 

printf("Wylosowałeś literke: %c", random('Z'-'A')+'A');

 

 

Nie zaliczam :P

Edytowane przez P3TRUS

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Widzę że nikt tu nie piszę oraz wątpię by komuś chciało bawić się w to asm, dlatego dam prościutkie PG by rozruszać temat. 

PG #63

 

Wykonaj skrypt ktory zshashuje tekst wpisany w konsoli na hex, przyklad: ULDTQMQ.png

 

 

 

PS: source poprzedniego PG, moze komus przyda sie http://pastebin.com/3cpgCvXF

ap.zip

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Przez zupełną pomyłkę podczas rozmowy (xD) z AXV zrobiłem to PawnGame, więc rzucam rozwiązanie:

#include <a_samp>

public OnRconCommand(cmd[]) {
	new bufbin[512];
	new tmpbuf[32];
	
	for(new i, j = strlen(cmd) - 1; i <= j; i++) {
		format(tmpbuf, sizeof(tmpbuf), "%x", cmd[i]);
		strcat(bufbin, tmpbuf);
	}
	printf(bufbin);
	return false;
}

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Zaliczam mój kod

#include a_samp

public OnRconCommand(cmd[]){
	return printf("wpisałeś: %s. HEX: %s", cmd, hex(cmd));
}

hex(cmdt[])
{
	new hexs[128];
	
	for(new i,l=strlen(cmdt);i<l;i++){
		format(hexs, sizeof(hexs), "%s%x", hexs, cmdt[i]);
	}
	return hexs;
}

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Dawno nie było, także skoro Shiny oddał kolejkę - wstawiam zadanie.


Pawn Game #64
Wykonaj funkcję, która zamieni podaną liczbę szesnastkową na binarną.
 

@EDIT: Dodałem .amxhextobin.amx

Edytowane przez Maku

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach
O 22.01.2015 o 00:57, Maku napisał:

Pawn Game #64
Wykonaj funkcję, która zamieni podaną liczbę szesnastkową na binarną.

@EDIT: Dodałem .amxhextobin.amx

Nikt się tutaj nie udziela ostatnio :/

Tutaj moja funkcja, pewnie u ciebie jest przeliczane "czystą matematyką", ale to jeszcze nie mój poziom.

public OnGameModeInit()
{
    printf(string, sizeof(string), "Nasza liczba binarna:%s", KonwertToBinary("d4f"));
    return 1;
}
new letters16[16] = {
    '0','1','2','3','4','5','6','7','8','9','a','b','c','d','e','f'};
new binarny[16][]={
    "0000","0001","0010","0011","0100","0101","0110","0111","1000","1001","1010","1011","1100","1101","1110","1111"};

stock KonwertToBinarny(szesnastkowa[])
{
    new string[24];
    for(new i;szesnastkowa[i];i++){
        for(new x;x<16;x++){
            if(szesnastkowa[i] == letters16[x]){
                strcat(string, binarny[x]);
            }
        }
    }
    format(szesnastkowa, sizeof(string), "%s", string);
    return string;
}

 

Pewnie dało się to zrobić lepiej (trochę zapętliłem) ale trzeba rozbujać ten temat bo bardzo mała aktywność. Przy okazji się czegoś nowego o systemach liczbowych dowiedziałem :)

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Nie mam już kodu z tego zadania, ale tak na sucho podam to poniżej:

	new hex = 0xFFF;
	new str[123];
	format(str, 123, "%b", hex);
	prinit(str);

Zaliczam.

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Tutaj moje rozwiązanie:

stock mixstr(string_to_mix[])
{
    new len = strlen(string_to_mix);
    for(new i;string_to_mix[i];i++){
        new letter = string_to_mix[i],
            MixPosition = random(len);
        string_to_mix[i] = string_to_mix[MixPosition];
        string_to_mix[MixPosition] = letter;
    }
    return string_to_mix;
}

Zaliczam.

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Twój kod ma jednego buga :P Mixujesz string i go zwracasz, zobacz wynik tego:

	new str[128];
	strcat(str, "Pawno.pl");
	printf("Return: %s", mixstr(str));
	printf("Var: %s", str);



PawnGame #66

Stwórz dwie funkcje, które działają tak jak explode() i implode() w PHP bez użycia sscanfa i strtok'a
Uproszczenie ze względu na ograniczenia pawn - do tablicy ma ładować zawsze jako string.
http://php.net/manual/en/function.implode.php
http://php.net/manual/en/function.explode.php

Plik w załączniku, a poniżej wynik z testowego użycia funkcji:

loadfs explode_implode
	String[64] = Pasta#lol#Zupa#lol#Kisiel#lol#Budyn#lol#Igrekzet
	Array[5][32] = pusty
	Function: explode(string, array, "#lol#");
	Array[0] = Pasta
	Array[1] = Zupa
	Array[2] = Kisiel
	Array[3] = Budyn
	Array[4] = Igrekzet
	Function: implode(string2, array, ", ");
	String2 = Pasta, Zupa, Kisiel, Budyn, Igrekzet
	  Filterscript 'explode_implode.amx' loaded.

 

explode_implode.amx

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach
#include <a_samp>
 
#define LIMIT_SPL 5
#define DELIMITER "#lol#"

public OnFilterScriptInit()
{ 
	
	printf("\n");
	printf(" =====================================================");
	printf("        PawnGame #66\n");
	printf("   (c) mrdrifter");
	printf("    Debug: %d", debug);
	printf("    Compiled %04d-%02d-%02d o %02d:%02d:%02d", __Date / 10000, __Date / 100 % 100, __Date % 100, __Time / 10000, __Time / 100 % 100, __Time % 100);
	printf(" =====================================================\n");
	 
	
	new str_to_splitting[] = "Pasta#lol#Zupa#lol#Kisiel#lol#Budyn#lol#Igrekzet";
	new array[LIMIT_SPL][32], str_implode[64];
	
	printf(" =====================[STEP 1]=========================");

	new count = explode(DELIMITER, str_to_splitting, array);
	
	for(new i;i<=count;i++)
		printf("array[%d] = \"%s\"", i, array[i]);
	
	implode(str_implode, array, ", ", count);
	printf("implode = %s", str_implode);
	
	printf(" =====================[STEP 2]=========================");

	str_to_splitting = "PastaZupa#KisielBudynIgrekzet5555555566";
	count = explode(DELIMITER, str_to_splitting, array);
	
	for(new i;i<=count;i++)
		printf("array[%d] = \"%s\"", i, array[i]);
	
	implode(str_implode, array, ", ", count);
	printf("implode = %s", str_implode);
	
	printf(" =====================[STEP 3]=========================");

	str_to_splitting = "Pasta#lol#Zupa#";
	count = explode(DELIMITER, str_to_splitting, array);
	
	for(new i;i<=count;i++)
		printf("array[%d] = \"%s\"", i, array[i]);
	
	implode(str_implode, array, ", ", count);
	printf("implode = %s", str_implode);
	return 1;
}

stock explode ( delimiter[], str[], array[][], limit = LIMIT_SPL)
{
	new count, cidx, oldidx=0, dlen = strlen(delimiter);
	cidx = strfind(str, delimiter, true);
	while (cidx != -1)
	{
		if(count == limit)
			return count;
		
		strmid(array[count], str, oldidx, cidx, 32);
		oldidx = (dlen + cidx);
		count ++;
		
		cidx = strfind(str, delimiter, true, cidx+1);
	}
	if(count < 0)
	{
		array[0][0] = 0;
		strcat(array[0], str, 32);
	}
	else 
	if(count == limit)
	{
		return count;
	}
	else 
	{
		strmid(array[count], str, oldidx, strlen(str), 32);
	}
	return count;
}

implode(str[], array[][], delimiter[], count, maxsize = 64)
{
	str[0] = 0;
	for(new i = 0; i <= count; i++)
	{
		strcat(str, array[i], maxsize);
		if((0 <= i < count))
		{
			strcat(str, delimiter, maxsize);
		}
	}
	return 1;
}
 =====================================================
        PawnGame #66

   (c) mrdrifter
    Debug: 1
    Compiled 2016-05-26 o 11:00:14
 =====================================================

 =====================[STEP 1]=========================
array[0] = "Pasta"
array[1] = "Zupa"
array[2] = "Kisiel"
array[3] = "Budyn"
array[4] = "Igrekzet"
implode = Pasta, Zupa, Kisiel, Budyn, Igrekzet
 =====================[STEP 2]=========================
array[0] = "PastaZupa#KisielBudynIgrekzet55"
implode = PastaZupa#KisielBudynIgrekzet55
 =====================[STEP 3]=========================
array[0] = "Pasta"
array[1] = "Zupa#"
implode = Pasta, Zupa#

 

Edytowane przez Beata_Szydlo_2015

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

PawnGame #67

Stwórz dwie funkcję jedną która zmienia podany ciąg znaków (string) do postaci hex i drugą która zmienia z hex na normalny napis (coś w rodzaju hashu - takie proste ale nie miałem pomysłu).

loadfs hex


 =====================================================
        PawnGame #67

   (c) mrdrifter
    Debug: 0
    Compiled 2016-05-26 o 21:31:31
 =====================================================

Pawn Game #67


 ==============================================================
Hex: 5061776E2047616D6520233637202D205A617069732069206F64637A797420737472696E6775207720706F737461636920484558
Orginal text: Pawn Game #67 - Zapis i odczyt stringu w postaci HEX
 ==============================================================
  Filterscript 'hex.amx' loaded.
Pawno.PL
OnRconCommand("Pawno.PL");
Hex: 5061776E6F2E504C
Orginal text: Pawno.PL
 ==============================================================

 

hex.amx

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

  • Przeglądający   0 użytkowników

    Brak zarejestrowanych użytkowników przeglądających tę stronę.

×