samp.directory
← Scripts y librerías

SAMP-git/pointers

Slice's pointers because it doesn't have a GitHub repo

Librería★ 1actualizado feb 2018Sin licenciaPAWNsampctl
Abrir en GitHub

Este repositorio no tiene archivo de licencia. Se puede leer, pero eso por sí solo no da permiso para reutilizarlo.

Instalar con sampctl

sampctl package install SAMP-git/pointers

Ejecútalo en la carpeta de tu proyecto. sampctl descarga el paquete y sus dependencias.

Depende de 1 paquete

Usado por 1 paquete

README.md

pointers

Slice's formatex because it doesn't have a GitHub repo.

Original thread: pointers.inc - Pointers for PAWN!

All credits to Slice/oscar-broman

The original library wasn't shipped with an explicit license but I'm sure, in the spirit of Open Source, Slice is happy to have this redistributed via GitHub - if not, let me know!

Here's a neat implementation of pointers for PAWN! This include makes it a lot easier to deal with variadic functions (functions that can take a varying number of arguments), but also allows you to, for example, have pointers from large enum structures into other arrays, parts of strings, etc.

Installation

Simply install to your project:

sampctl package install SAMP-git/pointers

Include in your code and begin using the library:

#include <pointers>

Usage

A quick example:

new
    g_Test[] = {123, 456, 789}
;

public OnGameModeInit() {
    new address = GetVariableAddress(g_Test);
    
    // Change the 2nd value
    @ptr[address][1] = 444;
    
    // Print out the values
    printf("%d, %d, %d", @ptr[address][0], @ptr[address][1], @ptr[address][2]);
}

Here's an example of a function that appends all string arguments to a given string.


public OnGameModeInit() {
    new buf[128] = "Lorem";
    
    concat(buf, sizeof(buf), "ipsum", "dolor", "sit", "amet,", "consectetur", "adipiscing.");
    
    // Prints out: Lorem ipsum dolor sit amet, consectetur adipiscing.
    print(buf);
}

// Append all strings to szOutput
stock concat(output[], maxsize = sizeof(output), ...) {
    new
        arg_count = numargs()
    ;
    
    for (new i = 2; i < arg_count; i++) {
        // First add a space
        strcat(output, " ", maxsize);
        
        // Then add the string
        strcat(output, @arg[i], maxsize);
    }
}

Syntax:

@ptr[address] // This is now a pointer to "address"
@arg[2] // This is now a pointer to the 3rd argument (0 is the first)

Esta página se genera con lo que GitHub publica sobre el repositorio. samp.directory no aloja el código. Informar de un problema con esta ficha